struct.ncd 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. template test_one {
  2. var(@struct_encode({{_arg0, _arg1}})) encoded;
  3. assert(@val_equal(encoded, _arg2));
  4. var(@struct_decode({_arg0}, encoded)) decoded;
  5. assert(@val_equal(decoded, {_arg1}));
  6. }
  7. process main {
  8. call(@test_one, {@u8, "0", "\x00"});
  9. call(@test_one, {@u8, "254", "\xFE"});
  10. call(@test_one, {@u8, "255", "\xFF"});
  11. call(@test_one, {@u16b, "0", "\x00\x00"});
  12. call(@test_one, {@u16l, "0", "\x00\x00"});
  13. call(@test_one, {@u16b, "65534", "\xFF\xFE"});
  14. call(@test_one, {@u16l, "65534", "\xFE\xFF"});
  15. call(@test_one, {@u16b, "65535", "\xFF\xFF"});
  16. call(@test_one, {@u16l, "65535", "\xFF\xFF"});
  17. call(@test_one, {@u32b, "0", "\x00\x00\x00\x00"});
  18. call(@test_one, {@u32l, "0", "\x00\x00\x00\x00"});
  19. call(@test_one, {@u32b, "4294967294", "\xFF\xFF\xFF\xFE"});
  20. call(@test_one, {@u32l, "4294967294", "\xFE\xFF\xFF\xFF"});
  21. call(@test_one, {@u32b, "4294967295", "\xFF\xFF\xFF\xFF"});
  22. call(@test_one, {@u32l, "4294967295", "\xFF\xFF\xFF\xFF"});
  23. call(@test_one, {@u64b, "0", "\x00\x00\x00\x00\x00\x00\x00\x00"});
  24. call(@test_one, {@u64l, "0", "\x00\x00\x00\x00\x00\x00\x00\x00"});
  25. call(@test_one, {@u64b, "18446744073709551614", "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFE"});
  26. call(@test_one, {@u64l, "18446744073709551614", "\xFE\xFF\xFF\xFF\xFF\xFF\xFF\xFF"});
  27. call(@test_one, {@u64b, "18446744073709551615", "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"});
  28. call(@test_one, {@u64l, "18446744073709551615", "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"});
  29. var(@struct_encode({{@u8, "4"}, {@u16l, "1000"}})) encoded;
  30. assert(@val_equal(encoded, "\x04\xE8\x03"));
  31. var(@struct_decode({@u8, @u16l}, "\x05\xE9\x03")) decoded;
  32. assert(@val_equal(decoded, {"5", "1001"}));
  33. exit("0");
  34. }