@@ -1177,6 +1177,7 @@ fn mk_enum_deser_body(
11771177
11781178#[cfg(test)]
11791179mod test {
1180+ use core::option::{None, Some};
11801181 use std::serialize::Encodable;
11811182 use std::serialize::Encoder;
11821183
@@ -1190,6 +1191,9 @@ mod test {
11901191 CallToEmitNil,
11911192 CallToEmitStruct(~str,uint),
11921193 CallToEmitField(~str,uint),
1194+ CallToEmitOption,
1195+ CallToEmitOptionNone,
1196+ CallToEmitOptionSome,
11931197 // all of the ones I was too lazy to handle:
11941198 CallToOther
11951199 }
@@ -1281,6 +1285,18 @@ mod test {
12811285 fn emit_tup_elt(&self, +_idx: uint, f: &fn()) {
12821286 self.add_unknown_to_log(); f();
12831287 }
1288+
1289+ fn emit_option(&self, f: &fn()) {
1290+ self.add_to_log(CallToEmitOption);
1291+ f();
1292+ }
1293+ fn emit_option_none(&self) {
1294+ self.add_to_log(CallToEmitOptionNone);
1295+ }
1296+ fn emit_option_some(&self, f: &fn()) {
1297+ self.add_to_log(CallToEmitOptionSome);
1298+ f();
1299+ }
12841300 }
12851301
12861302
@@ -1296,13 +1312,58 @@ mod test {
12961312 Magazine(~str)
12971313 }
12981314
1299- #[test] fn encode_enum_test () {
1300- assert_eq!(to_call_log(Book(34,44)),
1301- ~[CallToEmitEnum (~" Written "),
1302- CallToEmitEnumVariant (~" Book " , 0 , 2 ) ,
1303- CallToEmitEnumVariantArg ( 0 ) ,
1304- CallToEmitUint ( 34 ) ,
1305- CallToEmitEnumVariantArg ( 1 ) ,
1306- CallToEmitUint ( 44 ) ] ) ;
1307- }
1315+ #[test]
1316+ fn test_encode_enum() {
1317+ assert_eq!(
1318+ to_call_log(Book(34,44)),
1319+ ~[
1320+ CallToEmitEnum(~" Written "),
1321+ CallToEmitEnumVariant(~" Book ",0,2),
1322+ CallToEmitEnumVariantArg(0),
1323+ CallToEmitUint(34),
1324+ CallToEmitEnumVariantArg(1),
1325+ CallToEmitUint(44),
1326+ ]
1327+ );
1328+ }
1329+
1330+ pub struct BPos(uint);
1331+
1332+ #[auto_encode]
1333+ pub struct HasPos { pos : BPos }
1334+
1335+ #[test]
1336+ fn test_encode_newtype() {
1337+ assert_eq!(
1338+ to_call_log(HasPos { pos:BPos(48) }),
1339+ ~[
1340+ CallToEmitStruct(~" HasPos ",1),
1341+ CallToEmitField(~" pos" , 0 ) ,
1342+ CallToEmitUint ( 48 ) ,
1343+ ]
1344+ ) ;
1345+ }
1346+
1347+ #[ test]
1348+ fn test_encode_option( ) {
1349+ let mut v = None ;
1350+
1351+ assert_eq!(
1352+ to_call_log( v) ,
1353+ ~[
1354+ CallToEmitOption ,
1355+ CallToEmitOptionNone ,
1356+ ]
1357+ ) ;
1358+
1359+ v = Some ( 54 u) ;
1360+ assert_eq ! (
1361+ to_call_log( v) ,
1362+ ~[
1363+ CallToEmitOption ,
1364+ CallToEmitOptionSome ,
1365+ CallToEmitUint ( 54 )
1366+ ]
1367+ ) ;
1368+ }
13081369}
0 commit comments