Fix TLV terminator. 0xFE is part of TLV, not NDEF.

This commit is contained in:
Romain Tartiere 2010-06-23 23:21:47 +00:00
parent 4e3cccd071
commit a235dbd0a9
3 changed files with 43 additions and 19 deletions

View file

@ -21,15 +21,15 @@
#include <freefare.h>
const uint8_t shortdata[] = "elephant"; /* read: "elephant\0" = 9 bytes! */
const uint8_t eshortdata[] = "\x03" "\x09" "elephant";
const uint8_t shortdata[8] = "elephant";
const uint8_t eshortdata[11] = "\x03" "\x08" "elephant" "\xfe";
/*
* Many thanks to Charles Baudelaire for helping me
* test things and helping you realize your f**king
* OS / compiler does not support UTF-8 ;-)
*/
const uint8_t longdata[] = "Dans une terre grasse et pleine d'escargots\n"
const uint8_t longdata[660] = "Dans une terre grasse et pleine d'escargots\n"
"Je veux creuser moi-même une fosse profonde,\n"
"Où je puisse à loisir étaler mes vieux os\n"
"Et dormir dans l'oubli comme un requin dans l'onde.\n"
@ -44,7 +44,7 @@ const uint8_t longdata[] = "Dans une terre grasse et pleine d'escargots\n"
"Et dites-moi s'il est encor quelque torture\n"
"Pour ce vieux corps sans âme et mort parmi les morts!\n";
const uint8_t elongdata[] = "\x07" "\xff\x02\x95"
const uint8_t elongdata[665] = "\x07" "\xff\x02\x94"
"Dans une terre grasse et pleine d'escargots\n"
"Je veux creuser moi-même une fosse profonde,\n"
"Où je puisse à loisir étaler mes vieux os\n"
@ -58,7 +58,8 @@ const uint8_t elongdata[] = "\x07" "\xff\x02\x95"
"Philosophes viveurs, fils de la pourriture,\n"
"À travers ma ruine allez donc sans remords,\n"
"Et dites-moi s'il est encor quelque torture\n"
"Pour ce vieux corps sans âme et mort parmi les morts!\n";
"Pour ce vieux corps sans âme et mort parmi les morts!\n"
"\xfe";
void
test_tlv_encode_short (void)
@ -67,10 +68,10 @@ test_tlv_encode_short (void)
size_t osize;
res = tlv_encode (3, shortdata, sizeof (shortdata), &osize);
cut_assert_equal_int (11, osize, cut_message ("Wrong encoded message length."));
cut_assert_equal_int (sizeof (eshortdata), osize, cut_message ("Wrong encoded message length."));
cut_assert_equal_int (3, res[0], cut_message ("Wrong type"));
cut_assert_equal_int (9, res[1], cut_message ("Wrong value length"));
cut_assert_equal_memory (res, osize, eshortdata, sizeof (eshortdata), cut_message ("Wrong encoded value"));
cut_assert_equal_int (sizeof (shortdata), res[1], cut_message ("Wrong value length"));
cut_assert_equal_memory (eshortdata, sizeof (eshortdata), res, osize, cut_message ("Wrong encoded value"));
free (res);
}
@ -81,12 +82,12 @@ test_tlv_encode_long (void)
size_t osize;
res = tlv_encode (7, longdata, sizeof (longdata), &osize);
cut_assert_equal_int (665, osize, cut_message ("Wrong encoded message length."));
cut_assert_equal_int (sizeof (elongdata), osize, cut_message ("Wrong encoded message length."));
cut_assert_equal_int (7, res[0], cut_message ("Wrong type"));
cut_assert_equal_int (0xff, res[1], cut_message ("Wrong value length"));
cut_assert_equal_int (0x02, res[2], cut_message ("Wrong value length"));
cut_assert_equal_int (0x95, res[3], cut_message ("Wrong value length"));
cut_assert_equal_memory (res, osize, elongdata, sizeof (elongdata), cut_message ("Wrong encoded value"));
cut_assert_equal_int (0x94, res[3], cut_message ("Wrong value length"));
cut_assert_equal_memory (elongdata, sizeof (elongdata), res, osize, cut_message ("Wrong encoded value"));
free (res);
}
@ -99,8 +100,8 @@ test_tlv_decode_short (void)
res = tlv_decode (eshortdata, &type, &size);
cut_assert_equal_int (3, type, cut_message ("Wrong type"));
cut_assert_equal_int (9, size, cut_message ("Wrong value length"));
cut_assert_equal_memory (res, size, shortdata, sizeof (shortdata), cut_message ("Wrong decoded value"));
cut_assert_equal_int (sizeof (shortdata), size, cut_message ("Wrong value length"));
cut_assert_equal_memory (shortdata, sizeof (shortdata), res, size, cut_message ("Wrong decoded value"));
free (res);
}
@ -113,8 +114,8 @@ test_tlv_decode_long (void)
res = tlv_decode (elongdata, &type, &size);
cut_assert_equal_int (7, type, cut_message ("Wrong type"));
cut_assert_equal_int (0x295, size, cut_message ("Wrong value length"));
cut_assert_equal_memory (res, size, longdata, sizeof (longdata), cut_message ("Wrong decoded value"));
cut_assert_equal_int (sizeof (longdata), size, cut_message ("Wrong value length"));
cut_assert_equal_memory (longdata, sizeof (longdata), res, size, cut_message ("Wrong decoded value"));
free (res);
}