[Gd-chatter] r11640 - trunk/libraries/packetizer/packetizer-test
hannes at gwydiondylan.org
hannes at gwydiondylan.org
Sat Jan 19 01:02:31 CET 2008
Author: hannes
Date: Sat Jan 19 01:02:30 2008
New Revision: 11640
Modified:
trunk/libraries/packetizer/packetizer-test/packetizer-test.dylan
Log:
Job: 7299
more test cases [for the last commit]
Modified: trunk/libraries/packetizer/packetizer-test/packetizer-test.dylan
==============================================================================
--- trunk/libraries/packetizer/packetizer-test/packetizer-test.dylan (original)
+++ trunk/libraries/packetizer/packetizer-test/packetizer-test.dylan Sat Jan 19 01:02:30 2008
@@ -487,6 +487,71 @@
check-equal("enum field parses correct to changed symbol", #"foobar", g.foobar);
end;
+define abstract protocol abstract-test (variably-typed-container-frame)
+ layering field foo :: <unsigned-byte>;
+end;
+
+define protocol abstract-sub42 (abstract-test)
+ over <abstract-test> 42;
+ field bar :: <unsigned-byte> = 42;
+end;
+
+define protocol abstract-sub23 (abstract-test)
+ over <abstract-test> 23;
+ field foobar :: <unsigned-byte> = 23;
+end;
+
+define test abstract-parse-test ()
+ let f = parse-frame(<abstract-test>, #(#x23, #x42, #x23));
+ frame-field-checker(0, f, 0, 8, 8);
+ frame-field-checker(1, f, 8, 8, 16);
+ check-equal("type with inline layering is correct",
+ #t, instance?(f, <abstract-sub23>));
+end;
+
+define test abstract-assemble-test ()
+ let f = make(<abstract-sub42>);
+ let as = assemble-frame(f);
+ check-equal("assembling of abstract is ok", 42, as.packet[0]);
+ check-equal("assembling of abstract is ok", 42, as.packet[0]);
+end;
+
+define protocol abstract-user (container-frame)
+ repeated field abstracts :: <abstract-test>,
+ reached-end?: instance?(frame, <abstract-sub23>);
+end;
+
+define test abstract-user-parse-test ()
+ let f = parse-frame(<abstract-user>, #(42, 42, 42, 42, 42, 42, 23, 23));
+ frame-field-checker(0, f, 0, 64, 64);
+ check-equal("abstract count is 4", 4, f.abstracts.size);
+ check-equal("repeated1 is 42", #t, instance?(f.abstracts[0], <abstract-sub42>));
+ check-equal("repeated2 is 42", #t, instance?(f.abstracts[1], <abstract-sub42>));
+ check-equal("repeated3 is 42", #t, instance?(f.abstracts[2], <abstract-sub42>));
+ check-equal("repeated4 is 23", #t, instance?(f.abstracts[3], <abstract-sub23>));
+end;
+
+define test abstract-user-assemble-test ()
+ let f = make(<abstract-user>,
+ abstracts: list(make(<abstract-sub42>),
+ make(<abstract-sub42>),
+ make(<abstract-sub42>),
+ make(<abstract-sub42>),
+ make(<abstract-sub23>)));
+ check-equal("frame size of abstract-user is correct", 80, frame-size(f));
+ let as = assemble-frame(f);
+ check-equal("byte1 of abstract-user is correct", 42, as.packet[0]);
+ check-equal("byte2 of abstract-user is correct", 42, as.packet[1]);
+ check-equal("byte3 of abstract-user is correct", 42, as.packet[2]);
+ check-equal("byte4 of abstract-user is correct", 42, as.packet[3]);
+ check-equal("byte5 of abstract-user is correct", 42, as.packet[4]);
+ check-equal("byte6 of abstract-user is correct", 42, as.packet[5]);
+ check-equal("byte7 of abstract-user is correct", 42, as.packet[6]);
+ check-equal("byte8 of abstract-user is correct", 42, as.packet[7]);
+ check-equal("byte9 of abstract-user is correct", 23, as.packet[8]);
+ check-equal("byte10 of abstract-user is correct", 23, as.packet[9]);
+end;
+
define suite packetizer-suite ()
test packetizer-parser;
test packetizer-dynamic-parser;
@@ -506,6 +571,8 @@
test dyn-length-client;
test dyn-length-client2;
test enum-parse-test;
+ test abstract-parse-test;
+ test abstract-user-parse-test;
end;
define suite packetizer-assemble-suite ()
@@ -526,6 +593,8 @@
test dns-foo-assemble;
test dynlength-assemble;
test enum-assemble-test;
+ test abstract-assemble-test;
+ test abstract-user-assemble-test;
end;
begin
More information about the chatter
mailing list