1 module plist.tests.integer; 2 import plist; 3 import plist.types; 4 5 unittest { 6 /* Can we even parse the date? */ 7 { 8 string xml = `<?xml version="1.0" encoding="UTF-8"?> 9 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 10 <plist version="1.0"> 11 <integer>1337</integer> 12 </plist>`; 13 Plist parse = new Plist(); 14 parse.read(xml); 15 assert(parse.length == 1, "Expected length of 1"); 16 17 assert(parse.write() == xml, "Writing doesn't output the same what we put in"); 18 assert(parse[0].type() == PlistElementType.PLIST_ELEMENT_INTEGER, "Expected integer at index 0"); 19 20 PlistElementInteger integer = cast(PlistElementInteger)parse[0]; 21 22 assert(integer.value == 1337, "Integer value is not the magic number"); 23 } 24 /* Set the data */ 25 { 26 string xml = `<?xml version="1.0" encoding="UTF-8"?> 27 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 28 <plist version="1.0"> 29 <integer>1337</integer> 30 </plist>`; 31 Plist parse = new Plist(); 32 parse.read(xml); 33 assert(parse.length == 1, "Expected length of 1"); 34 35 assert(parse.write() == xml, "Writing doesn't output the same what we put in"); 36 assert(parse[0].type() == PlistElementType.PLIST_ELEMENT_INTEGER, "Expected integer at index 0"); 37 38 PlistElementInteger integer = cast(PlistElementInteger)parse[0]; 39 40 assert(integer.value == 1337, "Integer value is not the magic number"); 41 integer.value = 0xBADB00B135; 42 assert(integer.value == 0xBADB00B135, "Integer value is not the magic number"); 43 } 44 /* Set the data, verify that XML matches */ 45 { 46 string xml = `<?xml version="1.0" encoding="UTF-8"?> 47 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 48 <plist version="1.0"> 49 <integer>1337</integer> 50 </plist>`; 51 string expected = `<?xml version="1.0" encoding="UTF-8"?> 52 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 53 <plist version="1.0"> 54 <integer>802538172725</integer> 55 </plist>`; 56 57 Plist parse = new Plist(); 58 parse.read(xml); 59 assert(parse.length == 1, "Expected length of 1"); 60 61 assert(parse.write() == xml, "Writing doesn't output the same what we put in"); 62 assert(parse[0].type() == PlistElementType.PLIST_ELEMENT_INTEGER, "Expected integer at index 0"); 63 64 PlistElementInteger integer = cast(PlistElementInteger)parse[0]; 65 66 assert(integer.value == 1337, "Integer value is not the magic number"); 67 integer.value = 0xBADB00B135; 68 assert(integer.value == 0xBADB00B135, "Integer value is not the magic number"); 69 assert(parse.write() == expected, "Expected different XML"); 70 } 71 /* Do something obviously invalid */ 72 { 73 string xml = `<?xml version="1.0" encoding="UTF-8"?> 74 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 75 <plist version="1.0"> 76 <integer><string></string></integer> 77 </plist>`; 78 Plist parse = new Plist(); 79 bool fail = false; 80 try { 81 parse.read(xml); 82 } catch(PlistParsingException e) { 83 fail = true; 84 } 85 86 assert(fail, "Expected operation to fail"); 87 88 } 89 }