mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-02-04 13:45:40 +00:00
Compare commits
731 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e1da5f192c | ||
|
|
c15809dd72 | ||
|
|
89a67d1bd2 | ||
|
|
c4c6709478 | ||
|
|
5e1f6ac4b3 | ||
|
|
8f8d86d0bb | ||
|
|
ecca11e2f3 | ||
|
|
527b09c6bc | ||
|
|
69b6595434 | ||
|
|
59b918c75f | ||
|
|
344132b50a | ||
|
|
a35e58e9cc | ||
|
|
4300d94858 | ||
|
|
ee85a84d8f | ||
|
|
2959d82231 | ||
|
|
5dfe6aefb0 | ||
|
|
7f7d0f84ef | ||
|
|
4bfaf36e24 | ||
|
|
695fc4b0af | ||
|
|
f16ed9742f | ||
|
|
6bfe68b8cf | ||
|
|
2e5c5b3c79 | ||
|
|
2a6e193756 | ||
|
|
65a86d87f0 | ||
|
|
d7131dfa4c | ||
|
|
a228b16314 | ||
|
|
b8c9048ac6 | ||
|
|
0b54350d59 | ||
|
|
59eddb7129 | ||
|
|
1096232f9d | ||
|
|
4b39ee8d00 | ||
|
|
27a9b12bbf | ||
|
|
11319c3341 | ||
|
|
4de061e0d1 | ||
|
|
258e894c30 | ||
|
|
8658eaf4e0 | ||
|
|
6d341abc75 | ||
|
|
4821d63b4a | ||
|
|
0617bf3170 | ||
|
|
425d13a2ac | ||
|
|
8a1e90f537 | ||
|
|
ddc00948ed | ||
|
|
c96ee81f06 | ||
|
|
f6201e2c35 | ||
|
|
d63fcfcf7f | ||
|
|
dcc50c4c23 | ||
|
|
60e46e580d | ||
|
|
0638998773 | ||
|
|
ad3113987b | ||
|
|
f2f0d0f2e7 | ||
|
|
f7fd2f6f65 | ||
|
|
281c18e21d | ||
|
|
1a9c8b5392 | ||
|
|
831a272f4b | ||
|
|
f47e68b9ba | ||
|
|
eaabd2ee77 | ||
|
|
a269edd6ea | ||
|
|
3bb501ce0c | ||
|
|
d0006a4653 | ||
|
|
c48a1394bc | ||
|
|
fcf7fcfd44 | ||
|
|
cca08e7103 | ||
|
|
b908732f5c | ||
|
|
4ee4a6e85f | ||
|
|
7990f11bab | ||
|
|
427f7c9136 | ||
|
|
f938f1593d | ||
|
|
480a1834ed | ||
|
|
df5acc648c | ||
|
|
10569e6aa1 | ||
|
|
e5103b4830 | ||
|
|
513646fc53 | ||
|
|
27f723bf2f | ||
|
|
6511ecb5ad | ||
|
|
7bf6e6f344 | ||
|
|
d3e340ae39 | ||
|
|
22167a9617 | ||
|
|
48bea55133 | ||
|
|
42239919e5 | ||
|
|
4840d9df6e | ||
|
|
1378b87ea6 | ||
|
|
6b48164b97 | ||
|
|
50b09aa249 | ||
|
|
ecbd147f6d | ||
|
|
c13df79848 | ||
|
|
48bcc1de5b | ||
|
|
d082f5de25 | ||
|
|
c2321669b6 | ||
|
|
e382635b85 | ||
|
|
b4e02d7f8c | ||
|
|
0dc8a0b6c0 | ||
|
|
171834986d | ||
|
|
97af686b73 | ||
|
|
7d627ffc6f | ||
|
|
d924f25eb2 | ||
|
|
abd8ef3b1f | ||
|
|
e9b8dba3a6 | ||
|
|
aaff7e7332 | ||
|
|
2fa00d1a16 | ||
|
|
8a2a2ecd12 | ||
|
|
98517bdd8c | ||
|
|
dfe76f7e7e | ||
|
|
a2e24b1f5f | ||
|
|
6a4e76e245 | ||
|
|
1ebec97e0e | ||
|
|
b9f03b02f0 | ||
|
|
2c06760778 | ||
|
|
3f0ee70b71 | ||
|
|
05b34f158b | ||
|
|
e08db935b4 | ||
|
|
47da068bd3 | ||
|
|
9de669606d | ||
|
|
a02d50e61d | ||
|
|
069dab7fba | ||
|
|
d65edadbbb | ||
|
|
6307a51c0a | ||
|
|
d27c602bdf | ||
|
|
59fe9cb113 | ||
|
|
b4b7ba75cb | ||
|
|
d02e0c16c4 | ||
|
|
4aa0eb54b7 | ||
|
|
c4f73abcb6 | ||
|
|
73dec51a4d | ||
|
|
b7c3c094ae | ||
|
|
97702ab3d5 | ||
|
|
a9b5fe706c | ||
|
|
198d48610c | ||
|
|
c0e0344914 | ||
|
|
d49b2f1b60 | ||
|
|
ec7172466b | ||
|
|
d75a512ead | ||
|
|
af8b6906b6 | ||
|
|
96bc301e6d | ||
|
|
c10749f34d | ||
|
|
0e4235c8ba | ||
|
|
b2d31bb87e | ||
|
|
3ee88793da | ||
|
|
ad0f01c3ef | ||
|
|
63a96a7cf8 | ||
|
|
b8d8ca9a5c | ||
|
|
6b0fca31ae | ||
|
|
c147b12b10 | ||
|
|
7884b0b775 | ||
|
|
9f3c263328 | ||
|
|
b830ce3d73 | ||
|
|
e8b7f33bf0 | ||
|
|
eae75c5943 | ||
|
|
c1f5ebcae1 | ||
|
|
acb8e98fe2 | ||
|
|
a24a92e97c | ||
|
|
f2d2fe97bb | ||
|
|
705252eec7 | ||
|
|
69ae0456f0 | ||
|
|
f07bd07cce | ||
|
|
9db2d2ca05 | ||
|
|
85248b0135 | ||
|
|
8663edc7df | ||
|
|
b9cc9e40fd | ||
|
|
5ce085ad2b | ||
|
|
d24f8a2fce | ||
|
|
a73e830209 | ||
|
|
146fb42fd0 | ||
|
|
5b54ed719e | ||
|
|
02d011228e | ||
|
|
07adfd20a3 | ||
|
|
1d00abd6cc | ||
|
|
36c2cc2f15 | ||
|
|
27cf01ce84 | ||
|
|
1e94163693 | ||
|
|
db1f94775b | ||
|
|
ce394eb4e9 | ||
|
|
15109bed88 | ||
|
|
8a18c8de34 | ||
|
|
2f093a80c7 | ||
|
|
5df1af9c17 | ||
|
|
d5ab37a5a6 | ||
|
|
ed9ecf0da9 | ||
|
|
4fc17197ca | ||
|
|
94a9cf0c3f | ||
|
|
1d9e12183f | ||
|
|
aaa8bbe709 | ||
|
|
805d1b9ad8 | ||
|
|
d24d3e5adb | ||
|
|
d3a7d552c3 | ||
|
|
9f1c5e2bd2 | ||
|
|
1ec4ea8354 | ||
|
|
e4fab52489 | ||
|
|
e029fa4833 | ||
|
|
2c3f229a6a | ||
|
|
3558d3532c | ||
|
|
ad5314dc22 | ||
|
|
eaa5bb5662 | ||
|
|
fcdc703595 | ||
|
|
ef9fa562ab | ||
|
|
ac285c48fe | ||
|
|
e57ad65210 | ||
|
|
0fc3a30422 | ||
|
|
49f6704694 | ||
|
|
6df712c538 | ||
|
|
bda3076a30 | ||
|
|
89e8e7c706 | ||
|
|
c10835d221 | ||
|
|
a6801350ea | ||
|
|
c7a5a62041 | ||
|
|
749b35e5cb | ||
|
|
3c520d33eb | ||
|
|
635170a051 | ||
|
|
9619311d11 | ||
|
|
4bee14835c | ||
|
|
f44059e16a | ||
|
|
bfb206a06d | ||
|
|
6b7b05eb31 | ||
|
|
a9a2a04332 | ||
|
|
50459645dd | ||
|
|
564386038f | ||
|
|
9f229aad47 | ||
|
|
f6f6ea21b4 | ||
|
|
ec416d5631 | ||
|
|
335cbca8fb | ||
|
|
ab8d5ec475 | ||
|
|
ef9f050fbf | ||
|
|
46b1838d72 | ||
|
|
2b9a527743 | ||
|
|
cb41f8a8a6 | ||
|
|
fcf003af7d | ||
|
|
350924545c | ||
|
|
ae6bf0f2da | ||
|
|
7395d9842c | ||
|
|
741a1e13d0 | ||
|
|
447064afc1 | ||
|
|
a443a6833a | ||
|
|
160239eba7 | ||
|
|
04fb3fd363 | ||
|
|
ba60c9b516 | ||
|
|
f8ddfcf5ae | ||
|
|
c379bdcadc | ||
|
|
575caeda92 | ||
|
|
0d4dcf4a60 | ||
|
|
ddb14a69d0 | ||
|
|
f1ace61076 | ||
|
|
0f5f866cd2 | ||
|
|
bd866c5b05 | ||
|
|
07ea1abbf8 | ||
|
|
6853376f60 | ||
|
|
0e67f0bff4 | ||
|
|
6035c19f47 | ||
|
|
592a3d3505 | ||
|
|
2c092ed665 | ||
|
|
2bd4a00df4 | ||
|
|
f0639b28b9 | ||
|
|
775bab6656 | ||
|
|
c82d865cd5 | ||
|
|
0b95b9509a | ||
|
|
d8185e3970 | ||
|
|
b3a3766d77 | ||
|
|
3681682fe8 | ||
|
|
12c292d038 | ||
|
|
5af4de2878 | ||
|
|
2e7f18c407 | ||
|
|
48248b2832 | ||
|
|
c6082fa7c7 | ||
|
|
3af19510a8 | ||
|
|
2a12b8132f | ||
|
|
3daec985ba | ||
|
|
4b79ee103c | ||
|
|
077abd590a | ||
|
|
cab890b1d9 | ||
|
|
d3f0858ec4 | ||
|
|
97896b91d7 | ||
|
|
ca354b3b7f | ||
|
|
d035211a64 | ||
|
|
75728a4d1d | ||
|
|
265789ea84 | ||
|
|
4577311432 | ||
|
|
963c333c2e | ||
|
|
6eff6cf3b6 | ||
|
|
c9794691bb | ||
|
|
9574232719 | ||
|
|
676bf584d6 | ||
|
|
0a4fd01ede | ||
|
|
6cb4023498 | ||
|
|
8f775dbb3b | ||
|
|
91785eab1f | ||
|
|
4f8751667a | ||
|
|
ad7508c464 | ||
|
|
97a9e141ae | ||
|
|
842a0c3daf | ||
|
|
b6acde9145 | ||
|
|
b97dbc2ac5 | ||
|
|
e03852bd7e | ||
|
|
0db5de204e | ||
|
|
5fe3f14419 | ||
|
|
ffe1d9a82d | ||
|
|
11d6560290 | ||
|
|
e29d8e6728 | ||
|
|
918e81a4cb | ||
|
|
ad0ddede38 | ||
|
|
e969b12884 | ||
|
|
7a5475255f | ||
|
|
0ffd436de8 | ||
|
|
4f685187e9 | ||
|
|
2b356b37b1 | ||
|
|
7c56268eb1 | ||
|
|
970a54e6e3 | ||
|
|
e35ddf0780 | ||
|
|
bf35b7c10b | ||
|
|
4026b8ca09 | ||
|
|
6d2e2d8c3b | ||
|
|
a2b08157cc | ||
|
|
0108ecf4c1 | ||
|
|
4921da0bb5 | ||
|
|
0c836bb3b1 | ||
|
|
a8e41c1505 | ||
|
|
f67e1c9d2b | ||
|
|
f0ce58a79e | ||
|
|
b7f782c1b7 | ||
|
|
5e39e169b2 | ||
|
|
104c5ccad4 | ||
|
|
d15b4d7d23 | ||
|
|
60e6a75d5e | ||
|
|
484415d0e5 | ||
|
|
0ef9b447c4 | ||
|
|
8f64e2defd | ||
|
|
fbdadce129 | ||
|
|
d3e7abfaa3 | ||
|
|
b2279e97b2 | ||
|
|
7cf969336f | ||
|
|
f73d48166a | ||
|
|
53af618fe4 | ||
|
|
5d2cf58477 | ||
|
|
664e7dce28 | ||
|
|
14a8f00864 | ||
|
|
0b889fdc06 | ||
|
|
e336efc149 | ||
|
|
4cd52162eb | ||
|
|
eab9fff711 | ||
|
|
d4f3511060 | ||
|
|
ed12bbb35c | ||
|
|
aa4629fe99 | ||
|
|
1950f23cf4 | ||
|
|
ca7c88cef6 | ||
|
|
10848e6c51 | ||
|
|
f5d0f065c1 | ||
|
|
17b0573b0b | ||
|
|
7f1d843d96 | ||
|
|
cc4837c1d1 | ||
|
|
588ee5bfe4 | ||
|
|
e9b1b2750f | ||
|
|
1d6fa06e97 | ||
|
|
2c22924239 | ||
|
|
eb01dd1e25 | ||
|
|
0a3cb79b1c | ||
|
|
da9eace8cc | ||
|
|
526a02b8b6 | ||
|
|
658c7a1c3b | ||
|
|
af84474795 | ||
|
|
42913c6732 | ||
|
|
2cdf544518 | ||
|
|
652ec58238 | ||
|
|
f8531daa5c | ||
|
|
e9e89b0b43 | ||
|
|
55e788a894 | ||
|
|
b28bb93ccb | ||
|
|
367aab0f83 | ||
|
|
9dcf3b9e0a | ||
|
|
3c514110ce | ||
|
|
c9b0c2dace | ||
|
|
d575b6977e | ||
|
|
a00e6a5e2d | ||
|
|
1b9ae83e8c | ||
|
|
8b91eb1caf | ||
|
|
2a6a7b5e9a | ||
|
|
a85943866e | ||
|
|
797fb519c1 | ||
|
|
3ba9d56363 | ||
|
|
04cd4e4056 | ||
|
|
348e170654 | ||
|
|
f5a4ca6276 | ||
|
|
672c010aa7 | ||
|
|
2459d88951 | ||
|
|
350d1c8d31 | ||
|
|
98a3842a3e | ||
|
|
b52a4469ee | ||
|
|
e3143e21ba | ||
|
|
1bf2181fd3 | ||
|
|
1460635aab | ||
|
|
935ec00c86 | ||
|
|
473b6de09b | ||
|
|
ba75f2ac2c | ||
|
|
a230b39fbc | ||
|
|
8e963ac62a | ||
|
|
eaaa89847d | ||
|
|
ef76166978 | ||
|
|
72912586a1 | ||
|
|
fb241a4036 | ||
|
|
368c8b0533 | ||
|
|
4010325e65 | ||
|
|
11dd75ad95 | ||
|
|
d0480a1311 | ||
|
|
2be33b845d | ||
|
|
2ad42e3a0f | ||
|
|
5d1f83800b | ||
|
|
30e89a7943 | ||
|
|
61f5dc4cf2 | ||
|
|
d056c179ed | ||
|
|
b9c4bfc67e | ||
|
|
6ab5ee0ae0 | ||
|
|
94c1a86702 | ||
|
|
af6dd6a7fc | ||
|
|
45d4926d4c | ||
|
|
ce016c5eb0 | ||
|
|
2225c1f2d8 | ||
|
|
2d0c0d5845 | ||
|
|
60f1756cbb | ||
|
|
738a1d250a | ||
|
|
c8e65e1e30 | ||
|
|
ecb09ce6f2 | ||
|
|
72a1484a71 | ||
|
|
de31c10c7c | ||
|
|
84483c229c | ||
|
|
b7e35a8fa8 | ||
|
|
8c190a26a5 | ||
|
|
2e5705125b | ||
|
|
daaa92def0 | ||
|
|
86ec97678e | ||
|
|
d74b82dc55 | ||
|
|
821ade2006 | ||
|
|
3ee999dccd | ||
|
|
f91bda51e1 | ||
|
|
47255fc331 | ||
|
|
f7488bed04 | ||
|
|
a94b3a82c4 | ||
|
|
1c8f64f5e6 | ||
|
|
a015e4df3f | ||
|
|
2489a49924 | ||
|
|
d418fbd60d | ||
|
|
cc2e7704e6 | ||
|
|
a980a56dfa | ||
|
|
da588e3bc0 | ||
|
|
8b6f45d9b7 | ||
|
|
9bdfe33baf | ||
|
|
13d338f615 | ||
|
|
36a8641c8d | ||
|
|
7bde6f99fc | ||
|
|
45428ce991 | ||
|
|
8eb5898ef6 | ||
|
|
556e1c972c | ||
|
|
df8f3e7122 | ||
|
|
da1d575806 | ||
|
|
c4d40a1dde | ||
|
|
912de926d0 | ||
|
|
c60fc1e31f | ||
|
|
386e607887 | ||
|
|
94c9b8d057 | ||
|
|
5f81275b10 | ||
|
|
37c484411b | ||
|
|
ad1f890742 | ||
|
|
2924529fa7 | ||
|
|
ebe675cae1 | ||
|
|
a40c666775 | ||
|
|
2ea060d3b3 | ||
|
|
f8a67839dd | ||
|
|
2773b12c9b | ||
|
|
929e12f976 | ||
|
|
8fbc6c4662 | ||
|
|
797378e9c8 | ||
|
|
113464a7d1 | ||
|
|
a13c837202 | ||
|
|
48765f1ae5 | ||
|
|
091ee56368 | ||
|
|
015a971147 | ||
|
|
7575a01a28 | ||
|
|
7aa14cafea | ||
|
|
db10721386 | ||
|
|
6112cf8d60 | ||
|
|
50caeba322 | ||
|
|
b3499984b3 | ||
|
|
a5609a7a82 | ||
|
|
8626a87860 | ||
|
|
fa31cd0e98 | ||
|
|
6b6b7c6289 | ||
|
|
baa3b272ab | ||
|
|
d7c4f244cc | ||
|
|
e21d226564 | ||
|
|
6ff6a7d4a4 | ||
|
|
daf19a561c | ||
|
|
26226a75ff | ||
|
|
4473edf476 | ||
|
|
54cf0a6470 | ||
|
|
0eb8f7e538 | ||
|
|
23b72c65ba | ||
|
|
db7d89600c | ||
|
|
67d51ad1d6 | ||
|
|
56b71cf7fe | ||
|
|
e0ec2a521f | ||
|
|
e8589ac7b5 | ||
|
|
21e425acee | ||
|
|
ee316052ae | ||
|
|
3463936ae0 | ||
|
|
5ff947b279 | ||
|
|
fdf2ea84ec | ||
|
|
ad9b001b6a | ||
|
|
1308571c10 | ||
|
|
b8cb3419c1 | ||
|
|
02533cf947 | ||
|
|
bf8bd04dc7 | ||
|
|
1894376ab6 | ||
|
|
c789e4df44 | ||
|
|
884685de4a | ||
|
|
7fda7be457 | ||
|
|
5daf759033 | ||
|
|
589ab0896a | ||
|
|
7645ab978f | ||
|
|
e6497289da | ||
|
|
95a9f4769d | ||
|
|
7917601f7a | ||
|
|
3400238fc5 | ||
|
|
cbd335c6aa | ||
|
|
9feaadd32a | ||
|
|
2ec008b3b7 | ||
|
|
c9a462a1c6 | ||
|
|
ab44aa7e68 | ||
|
|
9b9d3176ec | ||
|
|
5dda3e2c81 | ||
|
|
4b8dc12c98 | ||
|
|
044e4c4c75 | ||
|
|
2149630865 | ||
|
|
3d435a1d7e | ||
|
|
f2d993a958 | ||
|
|
7bf75b8dc5 | ||
|
|
dfbdce1dc8 | ||
|
|
63f5566e65 | ||
|
|
4b0f43f6c0 | ||
|
|
98e1ef7362 | ||
|
|
4e0ffcb3c8 | ||
|
|
a93a46d6c0 | ||
|
|
e163302522 | ||
|
|
838afc35c3 | ||
|
|
3a62bfab57 | ||
|
|
560b3a246c | ||
|
|
4360916750 | ||
|
|
3f31edc1c0 | ||
|
|
bd874d436b | ||
|
|
fbc47425f4 | ||
|
|
c9df6ff059 | ||
|
|
ef6ff85e96 | ||
|
|
bb93792f57 | ||
|
|
1f7ab4fccb | ||
|
|
2535e82618 | ||
|
|
66d80c8523 | ||
|
|
834a17fe82 | ||
|
|
ea85167e06 | ||
|
|
e007a06dda | ||
|
|
02f9e1e935 | ||
|
|
21b7d431a7 | ||
|
|
307b932f87 | ||
|
|
6983d1cd3c | ||
|
|
a193c9bb3c | ||
|
|
aa67c7ad6d | ||
|
|
70fc686249 | ||
|
|
c87a456a46 | ||
|
|
456bb1e95b | ||
|
|
b0b334103d | ||
|
|
78851e3b57 | ||
|
|
850a883e14 | ||
|
|
6e0ced5ffe | ||
|
|
64cd8febaa | ||
|
|
6fbe1cffaa | ||
|
|
601e781ef9 | ||
|
|
d26ad35573 | ||
|
|
b70c510734 | ||
|
|
29a7158488 | ||
|
|
1227ca020a | ||
|
|
cd7e6ff98d | ||
|
|
510a0f77f6 | ||
|
|
6d1dabb1db | ||
|
|
2e337891da | ||
|
|
d49e18a83e | ||
|
|
c14560ec18 | ||
|
|
e3e31cd9f2 | ||
|
|
adf9627045 | ||
|
|
c7b03c7765 | ||
|
|
b5f83215d5 | ||
|
|
96e3fc5533 | ||
|
|
828e7dda03 | ||
|
|
8ef50c30d5 | ||
|
|
cbe1d5b608 | ||
|
|
7123a9e986 | ||
|
|
af5996b972 | ||
|
|
15e947784b | ||
|
|
1b382c201e | ||
|
|
8deca4fb0c | ||
|
|
96c4372609 | ||
|
|
ca7a109037 | ||
|
|
c54f5b3c5d | ||
|
|
652942ab9f | ||
|
|
2cc19a9c36 | ||
|
|
6ffb3f4bbd | ||
|
|
bab4278318 | ||
|
|
013d18a426 | ||
|
|
e94e27910e | ||
|
|
34cea6e74a | ||
|
|
640e160863 | ||
|
|
3100963250 | ||
|
|
2086358762 | ||
|
|
ae273c589d | ||
|
|
a229015fcd | ||
|
|
b001680674 | ||
|
|
e684133f72 | ||
|
|
2b020eecc7 | ||
|
|
78f4d6faca | ||
|
|
f07b7a049e | ||
|
|
544637779c | ||
|
|
38b6427e4e | ||
|
|
e36822a19c | ||
|
|
e1a114976f | ||
|
|
5ba9ab3457 | ||
|
|
36edf9ed54 | ||
|
|
e788ffa851 | ||
|
|
e0d819b88d | ||
|
|
e3b216ad09 | ||
|
|
55d0fd452d | ||
|
|
089fd02b2e | ||
|
|
8cfd820dcd | ||
|
|
67ed9860fe | ||
|
|
ee924e3a34 | ||
|
|
9e5085ba79 | ||
|
|
dbfdbbff20 | ||
|
|
21dc72bf11 | ||
|
|
c8295c4724 | ||
|
|
44b4dd3d1b | ||
|
|
7e543c6acb | ||
|
|
63514d149f | ||
|
|
d7e559749d | ||
|
|
a2be40fcbc | ||
|
|
771df5c372 | ||
|
|
2d3d6348ad | ||
|
|
a2bf15f0bc | ||
|
|
0aa25df88f | ||
|
|
36afb1c0ee | ||
|
|
c9d61906fb | ||
|
|
d8440a01d3 | ||
|
|
74d92312ef | ||
|
|
0dc9823d2b | ||
|
|
9c69737073 | ||
|
|
66187dcf04 | ||
|
|
79943560bc | ||
|
|
b3321f9c9a | ||
|
|
428c269a49 | ||
|
|
e84964a321 | ||
|
|
0394ea5356 | ||
|
|
852b086920 | ||
|
|
b7fceee2b7 | ||
|
|
ecf6c957c9 | ||
|
|
5e0b0070ff | ||
|
|
9934bc31a3 | ||
|
|
7b4711f5cf | ||
|
|
844066815d | ||
|
|
3a6293e696 | ||
|
|
3210b8601d | ||
|
|
181788802d | ||
|
|
4b627ce776 | ||
|
|
8b799bb5c8 | ||
|
|
5bc8336fce | ||
|
|
4f9f8ddcec | ||
|
|
29f1f63ef8 | ||
|
|
48ecdff5f7 | ||
|
|
411acd2d5a | ||
|
|
e6742fe889 | ||
|
|
b6561719a7 | ||
|
|
2bf3d6f9a6 | ||
|
|
b2700b5975 | ||
|
|
95b28874da | ||
|
|
4934ee837c | ||
|
|
3cbfd5cd10 | ||
|
|
da28ce310b | ||
|
|
ac6d93a3b9 | ||
|
|
104028204d | ||
|
|
d3e61b42dd | ||
|
|
6351cabb62 | ||
|
|
ddef42126b | ||
|
|
9dd39a7f02 | ||
|
|
ca7f7e97e7 | ||
|
|
8a40349b0c | ||
|
|
6ec6fa4973 | ||
|
|
f0644710e6 | ||
|
|
34048726ab | ||
|
|
60ce6c9370 | ||
|
|
554fccc236 | ||
|
|
7611c043c3 | ||
|
|
976d793474 | ||
|
|
f0f997fadd | ||
|
|
0ce3c9892d | ||
|
|
9743565285 | ||
|
|
fcfe9e4790 | ||
|
|
be36432296 | ||
|
|
fb725bff19 | ||
|
|
2384cf9f9f | ||
|
|
1261930fd9 | ||
|
|
120de4e49f | ||
|
|
354a51769b | ||
|
|
a9f937baa3 | ||
|
|
1790d82a6e | ||
|
|
261c20e95a | ||
|
|
ed6556b1f0 | ||
|
|
a86af8c32a | ||
|
|
1670ab45a0 | ||
|
|
7dc4750f3b | ||
|
|
b5f366680d | ||
|
|
fa9e9a0b2b | ||
|
|
2239b82a4b | ||
|
|
3b631678f5 | ||
|
|
2b111a9688 | ||
|
|
0bda1f4f88 | ||
|
|
7d50e0e1c5 | ||
|
|
224a4caab0 | ||
|
|
b4689da404 | ||
|
|
af66657399 | ||
|
|
0f3e2d8275 | ||
|
|
d664b6defc | ||
|
|
adbf74a6e0 | ||
|
|
7eb401efed | ||
|
|
ba97381b99 | ||
|
|
3de92de225 | ||
|
|
01a195c8aa | ||
|
|
12d43ef68a | ||
|
|
0df806a6d1 | ||
|
|
f8c713b260 | ||
|
|
4d0122f97c | ||
|
|
7874950a7a | ||
|
|
577afc8947 |
167
.editorconfig
Normal file
167
.editorconfig
Normal file
@@ -0,0 +1,167 @@
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
# C# files
|
||||
[*.cs]
|
||||
|
||||
# Indentation and spacing
|
||||
charset = utf-8
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
tab_width = 4
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
# New line preferences
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
max_line_length = unset
|
||||
|
||||
# using directive preferences
|
||||
csharp_using_directive_placement = outside_namespace
|
||||
dotnet_diagnostic.IDE0005.severity = error
|
||||
|
||||
# Code-block preferences
|
||||
csharp_style_namespace_declarations = block_scoped
|
||||
csharp_style_prefer_method_group_conversion = true
|
||||
csharp_style_prefer_top_level_statements = false
|
||||
|
||||
# Expression-level preferences
|
||||
csharp_prefer_simple_default_expression = true
|
||||
csharp_style_inlined_variable_declaration = true
|
||||
csharp_style_unused_value_assignment_preference = discard_variable
|
||||
csharp_style_unused_value_expression_statement_preference = discard_variable
|
||||
dotnet_diagnostic.IDE0001.severity = warning
|
||||
dotnet_diagnostic.IDE0002.severity = warning
|
||||
dotnet_diagnostic.IDE0004.severity = warning
|
||||
dotnet_diagnostic.IDE0010.severity = error
|
||||
dotnet_diagnostic.IDE0051.severity = warning
|
||||
dotnet_diagnostic.IDE0052.severity = warning
|
||||
dotnet_diagnostic.IDE0072.severity = warning
|
||||
dotnet_diagnostic.IDE0080.severity = warning
|
||||
dotnet_diagnostic.IDE0100.severity = error
|
||||
dotnet_diagnostic.IDE0110.severity = error
|
||||
dotnet_diagnostic.IDE0120.severity = warning
|
||||
dotnet_diagnostic.IDE0121.severity = warning
|
||||
dotnet_diagnostic.IDE0240.severity = error
|
||||
dotnet_diagnostic.IDE0241.severity = error
|
||||
dotnet_style_coalesce_expression = true
|
||||
dotnet_style_namespace_match_folder = false
|
||||
dotnet_style_null_propagation = true
|
||||
dotnet_style_prefer_auto_properties = true
|
||||
dotnet_style_prefer_collection_expression = when_types_loosely_match
|
||||
dotnet_style_prefer_is_null_check_over_reference_equality_method = true
|
||||
dotnet_style_prefer_compound_assignment = true
|
||||
csharp_style_prefer_simple_property_accessors = true
|
||||
dotnet_style_prefer_simplified_interpolation = true
|
||||
dotnet_style_prefer_simplified_boolean_expressions = true
|
||||
csharp_style_prefer_unbound_generic_type_in_nameof = true
|
||||
|
||||
# Field preferences
|
||||
dotnet_diagnostic.IDE0044.severity = warning
|
||||
dotnet_style_readonly_field = true
|
||||
|
||||
# Language keyword vs. framework types preferences
|
||||
dotnet_diagnostic.IDE0049.severity = error
|
||||
dotnet_style_predefined_type_for_locals_parameters_members = true
|
||||
dotnet_style_predefined_type_for_member_access = true
|
||||
|
||||
# Modifier preferences
|
||||
csharp_prefer_static_local_function = true
|
||||
csharp_style_prefer_readonly_struct = true
|
||||
dotnet_diagnostic.IDE0036.severity = warning
|
||||
dotnet_diagnostic.IDE0040.severity = error
|
||||
dotnet_diagnostic.IDE0380.severity = error
|
||||
dotnet_style_require_accessibility_modifiers = always
|
||||
|
||||
# New-line preferences
|
||||
dotnet_diagnostic.IDE2000.severity = warning
|
||||
dotnet_diagnostic.IDE2002.severity = warning
|
||||
dotnet_diagnostic.IDE2003.severity = warning
|
||||
dotnet_diagnostic.IDE2004.severity = warning
|
||||
dotnet_diagnostic.IDE2005.severity = warning
|
||||
dotnet_diagnostic.IDE2006.severity = warning
|
||||
csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = false
|
||||
csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = false
|
||||
csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = false
|
||||
csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false
|
||||
dotnet_style_allow_multiple_blank_lines_experimental = false
|
||||
dotnet_style_allow_statement_immediately_after_block_experimental = false
|
||||
|
||||
# Null-checking preferences
|
||||
csharp_style_conditional_delegate_call = true
|
||||
|
||||
# Parameter preferences
|
||||
dotnet_code_quality_unused_parameters = all
|
||||
dotnet_diagnostic.IDE0280.severity = error
|
||||
|
||||
# Parentheses preferences
|
||||
dotnet_diagnostic.IDE0047.severity = warning
|
||||
dotnet_diagnostic.IDE0048.severity = warning
|
||||
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
|
||||
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
|
||||
dotnet_style_parentheses_in_other_operators = always_for_clarity
|
||||
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity
|
||||
|
||||
# Pattern-matching preferences
|
||||
dotnet_diagnostic.IDE0019.severity = warning
|
||||
dotnet_diagnostic.IDE0020.severity = warning
|
||||
dotnet_diagnostic.IDE0038.severity = warning
|
||||
dotnet_diagnostic.IDE0066.severity = none
|
||||
dotnet_diagnostic.IDE0083.severity = warning
|
||||
dotnet_diagnostic.IDE0260.severity = warning
|
||||
csharp_style_pattern_matching_over_as_with_null_check = true
|
||||
csharp_style_pattern_matching_over_is_with_cast_check = true
|
||||
csharp_style_prefer_not_pattern = true
|
||||
csharp_style_prefer_pattern_matching = true
|
||||
|
||||
# this. and Me. preferences
|
||||
dotnet_style_qualification_for_event = false
|
||||
dotnet_style_qualification_for_field = false
|
||||
dotnet_style_qualification_for_method = false
|
||||
dotnet_style_qualification_for_property = false
|
||||
|
||||
# var preferences
|
||||
csharp_style_var_for_built_in_types = false
|
||||
csharp_style_var_when_type_is_apparent = true
|
||||
|
||||
# .NET formatting options
|
||||
dotnet_separate_import_directive_groups = false
|
||||
dotnet_sort_system_directives_first = true
|
||||
|
||||
# C# formatting options
|
||||
csharp_indent_block_contents = true
|
||||
csharp_indent_braces = false
|
||||
csharp_indent_case_contents = true
|
||||
csharp_indent_case_contents_when_block = false
|
||||
csharp_indent_labels = one_less_than_current
|
||||
csharp_indent_switch_labels = true
|
||||
csharp_new_line_before_catch = true
|
||||
csharp_new_line_before_else = true
|
||||
csharp_new_line_before_finally = true
|
||||
csharp_new_line_before_members_in_anonymous_types = true
|
||||
csharp_new_line_before_members_in_object_initializers = true
|
||||
csharp_new_line_before_open_brace = all
|
||||
csharp_new_line_between_query_expression_clauses = true
|
||||
csharp_preserve_single_line_blocks = true
|
||||
csharp_preserve_single_line_statements = true
|
||||
csharp_space_after_cast = false
|
||||
csharp_space_after_colon_in_inheritance_clause = true
|
||||
csharp_space_after_comma = true
|
||||
csharp_space_after_dot = false
|
||||
csharp_space_after_keywords_in_control_flow_statements = true
|
||||
csharp_space_after_semicolon_in_for_statement = true
|
||||
csharp_space_around_binary_operators = before_and_after
|
||||
csharp_space_around_declaration_statements = false
|
||||
csharp_space_before_colon_in_inheritance_clause = true
|
||||
csharp_space_before_comma = false
|
||||
csharp_space_before_dot = false
|
||||
csharp_space_before_open_square_brackets = false
|
||||
csharp_space_before_semicolon_in_for_statement = false
|
||||
csharp_space_between_empty_square_brackets = false
|
||||
csharp_space_between_method_call_empty_parameter_list_parentheses = false
|
||||
csharp_space_between_method_call_name_and_opening_parenthesis = false
|
||||
csharp_space_between_method_call_parameter_list_parentheses = false
|
||||
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
|
||||
csharp_space_between_method_declaration_parameter_list_parentheses = false
|
||||
csharp_space_between_parentheses = false
|
||||
csharp_space_between_square_brackets = false
|
||||
48
.github/workflows/build_and_test.yml
vendored
Normal file
48
.github/workflows/build_and_test.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
name: Build and Test
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["main"]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v5
|
||||
with:
|
||||
dotnet-version: |
|
||||
8.0.x
|
||||
9.0.x
|
||||
10.0.x
|
||||
|
||||
- name: Run tests
|
||||
run: dotnet test
|
||||
|
||||
- name: Run publish script
|
||||
run: ./publish-nix.sh -d
|
||||
|
||||
- name: Update rolling tag
|
||||
run: |
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||||
git tag -f rolling
|
||||
git push origin :refs/tags/rolling || true
|
||||
git push origin rolling --force
|
||||
|
||||
- name: Upload to rolling
|
||||
uses: ncipollo/release-action@v1.20.0
|
||||
with:
|
||||
allowUpdates: True
|
||||
artifacts: "*.nupkg,*.snupkg,*.zip"
|
||||
body: "Last built commit: ${{ github.sha }}"
|
||||
name: "Rolling Release"
|
||||
prerelease: True
|
||||
replacesArtifacts: True
|
||||
tag: "rolling"
|
||||
updateOnlyUnreleased: True
|
||||
49
.github/workflows/build_nupkg.yml
vendored
49
.github/workflows/build_nupkg.yml
vendored
@@ -1,49 +0,0 @@
|
||||
name: Nuget Pack
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "main" ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
dotnet-version: 9.0.x
|
||||
|
||||
- name: Restore dependencies
|
||||
run: dotnet restore
|
||||
|
||||
- name: Build library
|
||||
run: dotnet build
|
||||
|
||||
- name: Run tests
|
||||
run: dotnet test
|
||||
|
||||
- name: Pack
|
||||
run: dotnet pack
|
||||
|
||||
- name: Upload build
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: 'Nuget Package'
|
||||
path: 'SabreTools.Serialization/bin/Release/*.nupkg'
|
||||
|
||||
- name: Upload to rolling
|
||||
uses: ncipollo/release-action@v1.14.0
|
||||
with:
|
||||
allowUpdates: True
|
||||
artifacts: 'SabreTools.Serialization/bin/Release/*.nupkg'
|
||||
body: 'Last built commit: ${{ github.sha }}'
|
||||
name: 'Rolling Release'
|
||||
prerelease: True
|
||||
replacesArtifacts: True
|
||||
tag: "rolling"
|
||||
updateOnlyUnreleased: True
|
||||
55
.github/workflows/build_test.yml
vendored
55
.github/workflows/build_test.yml
vendored
@@ -1,55 +0,0 @@
|
||||
name: Build InfoPrint
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "main" ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
project: [InfoPrint]
|
||||
runtime: [win-x86, win-x64, win-arm64, linux-x64, linux-arm64, osx-x64]
|
||||
framework: [net9.0] #[net20, net35, net40, net452, net472, net48, netcoreapp3.1, net5.0, net6.0, net7.0, net8.0, net9.0]
|
||||
conf: [Debug] #[Release, Debug]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
dotnet-version: 9.0.x
|
||||
|
||||
- name: Restore dependencies
|
||||
run: dotnet restore
|
||||
|
||||
- name: Build
|
||||
run: dotnet publish ${{ matrix.project }}/${{ matrix.project }}.csproj -f ${{ matrix.framework }} -r ${{ matrix.runtime }} -c ${{ matrix.conf == 'Release' && 'Release -p:DebugType=None -p:DebugSymbols=false' || 'Debug'}} --self-contained true --version-suffix ${{ github.sha }} ${{ (startsWith(matrix.framework, 'net5') || startsWith(matrix.framework, 'net6') || startsWith(matrix.framework, 'net7') || startsWith(matrix.framework, 'net8') || startsWith(matrix.framework, 'net9')) && '-p:PublishSingleFile=true' || ''}}
|
||||
|
||||
- name: Archive build
|
||||
run: |
|
||||
cd ${{ matrix.project }}/bin/Debug/${{ matrix.framework }}/${{ matrix.runtime }}/publish/
|
||||
zip -r ${{ github.workspace }}/${{ matrix.project }}_${{ matrix.framework }}_${{ matrix.runtime }}_${{ matrix.conf }}.zip ./
|
||||
|
||||
- name: Upload build
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.project }}_${{ matrix.framework }}_${{ matrix.runtime }}_${{ matrix.conf }}
|
||||
path: ${{ matrix.project }}_${{ matrix.framework }}_${{ matrix.runtime }}_${{ matrix.conf }}.zip
|
||||
|
||||
- name: Upload to rolling
|
||||
uses: ncipollo/release-action@v1.14.0
|
||||
with:
|
||||
allowUpdates: True
|
||||
artifacts: ${{ matrix.project }}_${{ matrix.framework }}_${{ matrix.runtime }}_${{ matrix.conf }}.zip
|
||||
body: 'Last built commit: ${{ github.sha }}'
|
||||
name: 'Rolling Release'
|
||||
prerelease: True
|
||||
replacesArtifacts: True
|
||||
tag: "rolling"
|
||||
updateOnlyUnreleased: True
|
||||
31
.github/workflows/check_pr.yml
vendored
31
.github/workflows/check_pr.yml
vendored
@@ -3,18 +3,21 @@ name: Build PR
|
||||
on: [pull_request]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
dotnet-version: 9.0.x
|
||||
|
||||
- name: Build
|
||||
run: dotnet build
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: Run tests
|
||||
run: dotnet test
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v5
|
||||
with:
|
||||
dotnet-version: |
|
||||
8.0.x
|
||||
9.0.x
|
||||
10.0.x
|
||||
|
||||
- name: Build
|
||||
run: dotnet build
|
||||
|
||||
- name: Run tests
|
||||
run: dotnet test
|
||||
|
||||
26
.vscode/launch.json
vendored
26
.vscode/launch.json
vendored
@@ -1,16 +1,30 @@
|
||||
{
|
||||
// Use IntelliSense to find out which attributes exist for C# debugging
|
||||
// Use hover for the description of the existing attributes
|
||||
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
// Use IntelliSense to find out which attributes exist for C# debugging
|
||||
// Use hover for the description of the existing attributes
|
||||
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": ".NET Core Launch (ExtractionTool)",
|
||||
"type": "coreclr",
|
||||
"request": "launch",
|
||||
"preLaunchTask": "build",
|
||||
// If you have changed target frameworks, make sure to update the program path.
|
||||
"program": "${workspaceFolder}/ExtractionTool/bin/Debug/net10.0/ExtractionTool.dll",
|
||||
"args": [],
|
||||
"cwd": "${workspaceFolder}",
|
||||
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
|
||||
"console": "internalConsole",
|
||||
"stopAtEntry": false,
|
||||
"justMyCode": false
|
||||
},
|
||||
{
|
||||
"name": ".NET Core Launch (InfoPrint)",
|
||||
"type": "coreclr",
|
||||
"request": "launch",
|
||||
"preLaunchTask": "build",
|
||||
// If you have changed target frameworks, make sure to update the program path.
|
||||
"program": "${workspaceFolder}/InfoPrint/bin/Debug/net9.0/InfoPrint.dll",
|
||||
"program": "${workspaceFolder}/InfoPrint/bin/Debug/net10.0/InfoPrint.dll",
|
||||
"args": [],
|
||||
"cwd": "${workspaceFolder}",
|
||||
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
|
||||
|
||||
56
ExtractionTool/ExtractionTool.csproj
Normal file
56
ExtractionTool/ExtractionTool.csproj
Normal file
@@ -0,0 +1,56 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net20;net35;net40;net452;net462;net472;net48;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0;net10.0</TargetFrameworks>
|
||||
<OutputType>Exe</OutputType>
|
||||
<CheckEolTargetFramework>false</CheckEolTargetFramework>
|
||||
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
|
||||
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
<SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<Version>2.2.1</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Support All Frameworks -->
|
||||
<PropertyGroup Condition="$(TargetFramework.StartsWith(`net2`)) OR $(TargetFramework.StartsWith(`net3`)) OR $(TargetFramework.StartsWith(`net4`))">
|
||||
<RuntimeIdentifiers>win-x86;win-x64</RuntimeIdentifiers>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="$(TargetFramework.StartsWith(`netcoreapp`)) OR $(TargetFramework.StartsWith(`net5`))">
|
||||
<RuntimeIdentifiers>win-x86;win-x64;win-arm64;linux-x64;linux-arm64;osx-x64</RuntimeIdentifiers>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="$(TargetFramework.StartsWith(`net6`)) OR $(TargetFramework.StartsWith(`net7`)) OR $(TargetFramework.StartsWith(`net8`)) OR $(TargetFramework.StartsWith(`net9`)) OR $(TargetFramework.StartsWith(`net10`))">
|
||||
<RuntimeIdentifiers>win-x86;win-x64;win-arm64;linux-x64;linux-arm64;osx-x64;osx-arm64</RuntimeIdentifiers>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="$(RuntimeIdentifier.StartsWith(`osx-arm`))">
|
||||
<TargetFrameworks>net6.0;net7.0;net8.0;net9.0;net10.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- These are needed for dealing with native Windows DLLs -->
|
||||
<ItemGroup Condition="'$(RuntimeIdentifier)'=='win-x86'">
|
||||
<ContentWithTargetPath Include="..\SabreTools.Serialization\runtimes\win-x86\native\StormLib.dll">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
<CopyToPublishDirectory>Always</CopyToPublishDirectory>
|
||||
<TargetPath>StormLib.dll</TargetPath>
|
||||
</ContentWithTargetPath>
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(RuntimeIdentifier)'=='win-x64'">
|
||||
<ContentWithTargetPath Include="..\SabreTools.Serialization\runtimes\win-x64\native\StormLib.dll">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
<CopyToPublishDirectory>Always</CopyToPublishDirectory>
|
||||
<TargetPath>StormLib.dll</TargetPath>
|
||||
</ContentWithTargetPath>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\SabreTools.Serialization\SabreTools.Serialization.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="SabreTools.CommandLine" Version="[1.4.0]" />
|
||||
<PackageReference Include="SabreTools.IO" Version="[1.9.0]" />
|
||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="10.0.0" Condition="!$(TargetFramework.StartsWith(`net2`)) AND !$(TargetFramework.StartsWith(`net3`)) AND !$(TargetFramework.StartsWith(`net40`)) AND !$(TargetFramework.StartsWith(`net452`))" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
340
ExtractionTool/Features/MainFeature.cs
Normal file
340
ExtractionTool/Features/MainFeature.cs
Normal file
@@ -0,0 +1,340 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using SabreTools.CommandLine;
|
||||
using SabreTools.CommandLine.Inputs;
|
||||
using SabreTools.IO.Extensions;
|
||||
using SabreTools.Serialization;
|
||||
using SabreTools.Serialization.Wrappers;
|
||||
|
||||
namespace ExtractionTool.Features
|
||||
{
|
||||
internal sealed class MainFeature : Feature
|
||||
{
|
||||
#region Feature Definition
|
||||
|
||||
public const string DisplayName = "main";
|
||||
|
||||
/// <remarks>Flags are unused</remarks>
|
||||
private static readonly string[] _flags = [];
|
||||
|
||||
/// <remarks>Description is unused</remarks>
|
||||
private const string _description = "";
|
||||
|
||||
#endregion
|
||||
|
||||
#region Inputs
|
||||
|
||||
private const string _debugName = "debug";
|
||||
internal readonly FlagInput DebugInput = new(_debugName, ["-d", "--debug"], "Enable debug mode");
|
||||
|
||||
private const string _outputPathName = "output-path";
|
||||
internal readonly StringInput OutputPathInput = new(_outputPathName, ["-o", "--outdir"], "Set output path for extraction (required)");
|
||||
|
||||
#endregion
|
||||
|
||||
#region Properties
|
||||
|
||||
/// <summary>
|
||||
/// Enable debug output for relevant operations
|
||||
/// </summary>
|
||||
public bool Debug { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Output path for archive extraction
|
||||
/// </summary>
|
||||
public string OutputPath { get; private set; } = string.Empty;
|
||||
|
||||
#endregion
|
||||
|
||||
public MainFeature()
|
||||
: base(DisplayName, _flags, _description)
|
||||
{
|
||||
RequiresInputs = true;
|
||||
|
||||
Add(DebugInput);
|
||||
Add(OutputPathInput);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool Execute()
|
||||
{
|
||||
// Get the options from the arguments
|
||||
Debug = GetBoolean(_debugName);
|
||||
OutputPath = GetString(_outputPathName) ?? string.Empty;
|
||||
|
||||
// Validate the output path
|
||||
if (!ValidateExtractionPath())
|
||||
return false;
|
||||
|
||||
// Loop through the input paths
|
||||
for (int i = 0; i < Inputs.Count; i++)
|
||||
{
|
||||
string arg = Inputs[i];
|
||||
ExtractPath(arg);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool VerifyInputs() => Inputs.Count > 0;
|
||||
|
||||
/// <summary>
|
||||
/// Wrapper to extract data for a single path
|
||||
/// </summary>
|
||||
/// <param name="path">File or directory path</param>
|
||||
private void ExtractPath(string path)
|
||||
{
|
||||
// Normalize by getting the full path
|
||||
path = Path.GetFullPath(path);
|
||||
Console.WriteLine($"Checking possible path: {path}");
|
||||
|
||||
// Check if the file or directory exists
|
||||
if (File.Exists(path))
|
||||
{
|
||||
ExtractFile(path);
|
||||
}
|
||||
else if (Directory.Exists(path))
|
||||
{
|
||||
foreach (string file in path.SafeEnumerateFiles("*", SearchOption.AllDirectories))
|
||||
{
|
||||
ExtractFile(file);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"{path} does not exist, skipping...");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Print information for a single file, if possible
|
||||
/// </summary>
|
||||
/// <param name="path">File path</param>
|
||||
private void ExtractFile(string file)
|
||||
{
|
||||
Console.WriteLine($"Attempting to extract all files from {file}");
|
||||
using Stream stream = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
|
||||
|
||||
// Get the extension for certain checks
|
||||
string extension = Path.GetExtension(file).ToLower().TrimStart('.');
|
||||
|
||||
// Get the first 16 bytes for matching
|
||||
byte[] magic = new byte[16];
|
||||
try
|
||||
{
|
||||
int read = stream.Read(magic, 0, 16);
|
||||
stream.SeekIfPossible(0, SeekOrigin.Begin);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (Debug) Console.Error.WriteLine(ex);
|
||||
return;
|
||||
}
|
||||
|
||||
// Get the file type
|
||||
WrapperType ft = WrapperFactory.GetFileType(magic, extension);
|
||||
var wrapper = WrapperFactory.CreateWrapper(ft, stream);
|
||||
|
||||
// Create the output directory
|
||||
Directory.CreateDirectory(OutputPath);
|
||||
|
||||
// Print the preamble
|
||||
Console.WriteLine($"Attempting to extract from '{wrapper?.Description() ?? "UNKNOWN"}'");
|
||||
Console.WriteLine();
|
||||
|
||||
switch (wrapper)
|
||||
{
|
||||
// 7-zip
|
||||
case SevenZip sz:
|
||||
sz.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// BFPK archive
|
||||
case BFPK bfpk:
|
||||
bfpk.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// BSP
|
||||
case BSP bsp:
|
||||
bsp.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// bzip2
|
||||
case BZip2 bzip2:
|
||||
bzip2.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// CD-ROM bin file
|
||||
case CDROM cdrom:
|
||||
cdrom.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// CFB
|
||||
case CFB cfb:
|
||||
cfb.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// GCF
|
||||
case GCF gcf:
|
||||
gcf.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// gzip
|
||||
case GZip gzip:
|
||||
gzip.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// InstallShield Archive V3 (Z)
|
||||
case InstallShieldArchiveV3 isv3:
|
||||
isv3.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// IS-CAB archive
|
||||
case InstallShieldCabinet iscab:
|
||||
iscab.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// ISO 9660 volume
|
||||
case ISO9660 iso9660:
|
||||
iso9660.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// LZ-compressed file, KWAJ variant
|
||||
case LZKWAJ kwaj:
|
||||
kwaj.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// LZ-compressed file, QBasic variant
|
||||
case LZQBasic qbasic:
|
||||
qbasic.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// LZ-compressed file, SZDD variant
|
||||
case LZSZDD szdd:
|
||||
szdd.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// Microsoft Cabinet archive
|
||||
case MicrosoftCabinet mscab:
|
||||
mscab.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// MoPaQ (MPQ) archive
|
||||
case MoPaQ mpq:
|
||||
mpq.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// New Executable
|
||||
case NewExecutable nex:
|
||||
nex.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// PAK
|
||||
case PAK pak:
|
||||
pak.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// PFF
|
||||
case PFF pff:
|
||||
pff.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// PKZIP
|
||||
case PKZIP pkzip:
|
||||
pkzip.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// Portable Executable
|
||||
case PortableExecutable pex:
|
||||
pex.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// Quantum
|
||||
case Quantum quantum:
|
||||
quantum.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// RAR
|
||||
case RAR rar:
|
||||
rar.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// SGA
|
||||
case SGA sga:
|
||||
sga.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// Tape Archive
|
||||
case TapeArchive tar:
|
||||
tar.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// VBSP
|
||||
case VBSP vbsp:
|
||||
vbsp.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// VPK
|
||||
case VPK vpk:
|
||||
vpk.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// WAD3
|
||||
case WAD3 wad:
|
||||
wad.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// xz
|
||||
case XZ xz:
|
||||
xz.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// XZP
|
||||
case XZP xzp:
|
||||
xzp.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// ZSTD
|
||||
case ZSTD zstd:
|
||||
zstd.Extract(OutputPath, Debug);
|
||||
break;
|
||||
|
||||
// Everything else
|
||||
default:
|
||||
Console.WriteLine("Not a supported extractable file format, skipping...");
|
||||
Console.WriteLine();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate the extraction path
|
||||
/// </summary>
|
||||
private bool ValidateExtractionPath()
|
||||
{
|
||||
// Null or empty output path
|
||||
if (string.IsNullOrEmpty(OutputPath))
|
||||
{
|
||||
Console.WriteLine("Output directory required for extraction!");
|
||||
Console.WriteLine();
|
||||
return false;
|
||||
}
|
||||
|
||||
// Malformed output path or invalid location
|
||||
try
|
||||
{
|
||||
OutputPath = Path.GetFullPath(OutputPath);
|
||||
Directory.CreateDirectory(OutputPath);
|
||||
}
|
||||
catch
|
||||
{
|
||||
Console.WriteLine("Output directory could not be created!");
|
||||
Console.WriteLine();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
79
ExtractionTool/Program.cs
Normal file
79
ExtractionTool/Program.cs
Normal file
@@ -0,0 +1,79 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ExtractionTool.Features;
|
||||
using SabreTools.CommandLine;
|
||||
using SabreTools.CommandLine.Features;
|
||||
|
||||
namespace ExtractionTool
|
||||
{
|
||||
public static class Program
|
||||
{
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
#if NET462_OR_GREATER || NETCOREAPP
|
||||
// Register the codepages
|
||||
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
|
||||
#endif
|
||||
|
||||
// Create the command set
|
||||
var mainFeature = new MainFeature();
|
||||
var commandSet = CreateCommands(mainFeature);
|
||||
|
||||
// If we have no args, show the help and quit
|
||||
if (args is null || args.Length == 0)
|
||||
{
|
||||
commandSet.OutputAllHelp();
|
||||
return;
|
||||
}
|
||||
|
||||
// Cache the first argument and starting index
|
||||
string featureName = args[0];
|
||||
|
||||
// Try processing the standalone arguments
|
||||
var topLevel = commandSet.GetTopLevel(featureName);
|
||||
switch (topLevel)
|
||||
{
|
||||
// Standalone Options
|
||||
case Help help: help.ProcessArgs(args, 0, commandSet); return;
|
||||
|
||||
// Default Behavior
|
||||
default:
|
||||
if (!mainFeature.ProcessArgs(args, 0))
|
||||
{
|
||||
commandSet.OutputAllHelp();
|
||||
return;
|
||||
}
|
||||
else if (!mainFeature.VerifyInputs())
|
||||
{
|
||||
Console.Error.WriteLine("At least one input is required");
|
||||
commandSet.OutputAllHelp();
|
||||
return;
|
||||
}
|
||||
|
||||
mainFeature.Execute();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create the command set for the program
|
||||
/// </summary>
|
||||
private static CommandSet CreateCommands(MainFeature mainFeature)
|
||||
{
|
||||
List<string> header = [
|
||||
"Extraction Tool",
|
||||
string.Empty,
|
||||
"ExtractionTool <options> file|directory ...",
|
||||
string.Empty,
|
||||
];
|
||||
|
||||
var commandSet = new CommandSet(header);
|
||||
|
||||
commandSet.Add(new Help(["-?", "-h", "--help"]));
|
||||
commandSet.Add(mainFeature.DebugInput);
|
||||
commandSet.Add(mainFeature.OutputPathInput);
|
||||
|
||||
return commandSet;
|
||||
}
|
||||
}
|
||||
}
|
||||
280
InfoPrint/Features/MainFeature.cs
Normal file
280
InfoPrint/Features/MainFeature.cs
Normal file
@@ -0,0 +1,280 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using SabreTools.CommandLine;
|
||||
using SabreTools.CommandLine.Inputs;
|
||||
using SabreTools.Hashing;
|
||||
using SabreTools.IO.Extensions;
|
||||
using SabreTools.Serialization;
|
||||
using SabreTools.Serialization.Wrappers;
|
||||
|
||||
namespace InfoPrint.Features
|
||||
{
|
||||
internal sealed class MainFeature : Feature
|
||||
{
|
||||
#region Feature Definition
|
||||
|
||||
public const string DisplayName = "main";
|
||||
|
||||
/// <remarks>Flags are unused</remarks>
|
||||
private static readonly string[] _flags = [];
|
||||
|
||||
/// <remarks>Description is unused</remarks>
|
||||
private const string _description = "";
|
||||
|
||||
#endregion
|
||||
|
||||
#region Inputs
|
||||
|
||||
private const string _debugName = "debug";
|
||||
internal readonly FlagInput DebugInput = new(_debugName, ["-d", "--debug"], "Enable debug mode");
|
||||
|
||||
private const string _fileOnlyName = "file-only";
|
||||
internal readonly FlagInput FileOnlyInput = new(_fileOnlyName, ["-f", "--file"], "Print to file only");
|
||||
|
||||
private const string _hashName = "hash";
|
||||
internal readonly FlagInput HashInput = new(_hashName, ["-c", "--hash"], "Output file hashes");
|
||||
|
||||
#if NETCOREAPP
|
||||
private const string _jsonName = "json";
|
||||
internal readonly FlagInput JsonInput = new(_jsonName, ["-j", "--json"], "Print info as JSON");
|
||||
#endif
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Enable debug output for relevant operations
|
||||
/// </summary>
|
||||
public bool Debug { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Output information to file only, skip printing to console
|
||||
/// </summary>
|
||||
public bool FileOnly { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Print external file hashes
|
||||
/// </summary>
|
||||
public bool Hash { get; private set; }
|
||||
|
||||
#if NETCOREAPP
|
||||
/// <summary>
|
||||
/// Enable JSON output
|
||||
/// </summary>
|
||||
public bool Json { get; private set; }
|
||||
#endif
|
||||
|
||||
public MainFeature()
|
||||
: base(DisplayName, _flags, _description)
|
||||
{
|
||||
RequiresInputs = true;
|
||||
|
||||
Add(DebugInput);
|
||||
Add(HashInput);
|
||||
Add(FileOnlyInput);
|
||||
#if NETCOREAPP
|
||||
Add(JsonInput);
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool Execute()
|
||||
{
|
||||
// Get the options from the arguments
|
||||
Debug = GetBoolean(_debugName);
|
||||
Hash = GetBoolean(_hashName);
|
||||
FileOnly = GetBoolean(_fileOnlyName);
|
||||
#if NETCOREAPP
|
||||
Json = GetBoolean(_jsonName);
|
||||
#endif
|
||||
|
||||
// Loop through the input paths
|
||||
for (int i = 0; i < Inputs.Count; i++)
|
||||
{
|
||||
string arg = Inputs[i];
|
||||
PrintPathInfo(arg);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool VerifyInputs() => Inputs.Count > 0;
|
||||
|
||||
/// <summary>
|
||||
/// Wrapper to print information for a single path
|
||||
/// </summary>
|
||||
/// <param name="path">File or directory path</param>
|
||||
private void PrintPathInfo(string path)
|
||||
{
|
||||
Console.WriteLine($"Checking possible path: {path}");
|
||||
|
||||
// Check if the file or directory exists
|
||||
if (File.Exists(path))
|
||||
{
|
||||
PrintFileInfo(path);
|
||||
}
|
||||
else if (Directory.Exists(path))
|
||||
{
|
||||
foreach (string file in path.SafeEnumerateFiles("*", SearchOption.AllDirectories))
|
||||
{
|
||||
PrintFileInfo(file);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"{path} does not exist, skipping...");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Print information for a single file, if possible
|
||||
/// </summary>
|
||||
/// <param name="file">File path</param>
|
||||
private void PrintFileInfo(string file)
|
||||
{
|
||||
Console.WriteLine($"Attempting to print info for {file}");
|
||||
|
||||
// Get the base info output name
|
||||
string filenameBase = $"info-{DateTime.Now:yyyy-MM-dd_HHmmss.ffff}";
|
||||
|
||||
// If we have the hash flag
|
||||
if (Hash)
|
||||
{
|
||||
var hashBuilder = PrintHashInfo(file);
|
||||
if (hashBuilder is not null)
|
||||
{
|
||||
// Create the output data
|
||||
string hashData = hashBuilder.ToString();
|
||||
|
||||
// Write the output data
|
||||
using var hsw = new StreamWriter(File.OpenWrite($"{filenameBase}.hashes"));
|
||||
hsw.WriteLine(hashData);
|
||||
hsw.Flush();
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
using Stream stream = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
|
||||
|
||||
// Read the first 8 bytes
|
||||
byte[] magic = stream.PeekBytes(8);
|
||||
|
||||
// Get the file type
|
||||
string extension = Path.GetExtension(file).TrimStart('.');
|
||||
WrapperType ft = WrapperFactory.GetFileType(magic ?? [], extension);
|
||||
|
||||
// Print out the file format
|
||||
Console.WriteLine($"File format found: {ft}");
|
||||
|
||||
// Setup the wrapper to print
|
||||
var wrapper = WrapperFactory.CreateWrapper(ft, stream);
|
||||
|
||||
// If we don't have a wrapper
|
||||
if (wrapper is null)
|
||||
{
|
||||
Console.WriteLine($"Either {ft} is not supported or something went wrong during parsing!");
|
||||
Console.WriteLine();
|
||||
return;
|
||||
}
|
||||
|
||||
#if NETCOREAPP
|
||||
// If we have the JSON flag
|
||||
if (Json)
|
||||
{
|
||||
// Create the output data
|
||||
string serializedData = wrapper.ExportJSON();
|
||||
|
||||
// Write the output data
|
||||
using var jsw = new StreamWriter(File.OpenWrite($"{filenameBase}.json"));
|
||||
jsw.WriteLine(serializedData);
|
||||
jsw.Flush();
|
||||
}
|
||||
#endif
|
||||
|
||||
// Create the output data
|
||||
var builder = wrapper.ExportStringBuilder();
|
||||
if (builder is null)
|
||||
{
|
||||
Console.WriteLine("No item information could be generated");
|
||||
return;
|
||||
}
|
||||
|
||||
// Only print to console if enabled
|
||||
if (!FileOnly)
|
||||
Console.WriteLine(builder);
|
||||
|
||||
using var sw = new StreamWriter(File.OpenWrite($"{filenameBase}.txt"));
|
||||
sw.WriteLine(file);
|
||||
sw.WriteLine();
|
||||
sw.WriteLine(builder.ToString());
|
||||
sw.Flush();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(Debug ? ex : "[Exception opening file, please try again]");
|
||||
Console.WriteLine();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Print hash information for a single file, if possible
|
||||
/// </summary>
|
||||
/// <param name="file">File path</param>
|
||||
/// <returns>StringBuilder representing the hash information, if possible</returns>
|
||||
private StringBuilder? PrintHashInfo(string file)
|
||||
{
|
||||
// Ignore missing files
|
||||
if (!File.Exists(file))
|
||||
return null;
|
||||
|
||||
Console.WriteLine($"Attempting to hash {file}, this may take a while...");
|
||||
|
||||
try
|
||||
{
|
||||
// Get all file hashes for flexibility
|
||||
var hashes = HashTool.GetFileHashes(file);
|
||||
if (hashes is null)
|
||||
{
|
||||
if (Debug) Console.WriteLine($"Hashes for {file} could not be retrieved");
|
||||
return null;
|
||||
}
|
||||
|
||||
// Output subset of available hashes
|
||||
var builder = new StringBuilder();
|
||||
if (hashes.TryGetValue(HashType.CRC16, out string? crc16) && crc16 is not null)
|
||||
builder.AppendLine($"CRC-16 checksum: {crc16}");
|
||||
if (hashes.TryGetValue(HashType.CRC32, out string? crc32) && crc32 is not null)
|
||||
builder.AppendLine($"CRC-32 checksum: {crc32}");
|
||||
if (hashes.TryGetValue(HashType.CRC64, out string? crc64) && crc64 is not null)
|
||||
builder.AppendLine($"CRC-64 checksum: {crc64}");
|
||||
if (hashes.TryGetValue(HashType.MD2, out string? md2) && md2 is not null)
|
||||
builder.AppendLine($"MD2 hash: {md2}");
|
||||
if (hashes.TryGetValue(HashType.MD4, out string? md4) && md4 is not null)
|
||||
builder.AppendLine($"MD4 hash: {md4}");
|
||||
if (hashes.TryGetValue(HashType.MD5, out string? md5) && md5 is not null)
|
||||
builder.AppendLine($"MD5 hash: {md5}");
|
||||
if (hashes.TryGetValue(HashType.RIPEMD128, out string? ripemd128) && ripemd128 is not null)
|
||||
builder.AppendLine($"RIPEMD-128 hash: {ripemd128}");
|
||||
if (hashes.TryGetValue(HashType.RIPEMD160, out string? ripemd160) && ripemd160 is not null)
|
||||
builder.AppendLine($"RIPEMD-160 hash: {ripemd160}");
|
||||
if (hashes.TryGetValue(HashType.SHA1, out string? sha1) && sha1 is not null)
|
||||
builder.AppendLine($"SHA-1 hash: {sha1}");
|
||||
if (hashes.TryGetValue(HashType.SHA256, out string? sha256) && sha256 is not null)
|
||||
builder.AppendLine($"SHA-256 hash: {sha256}");
|
||||
if (hashes.TryGetValue(HashType.SHA384, out string? sha384) && sha384 is not null)
|
||||
builder.AppendLine($"SHA-384 hash: {sha384}");
|
||||
if (hashes.TryGetValue(HashType.SHA512, out string? sha512) && sha512 is not null)
|
||||
builder.AppendLine($"SHA-512 hash: {sha512}");
|
||||
|
||||
return builder;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(Debug ? ex : "[Exception opening file, please try again]");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,16 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net20;net35;net40;net452;net462;net472;net48;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0</TargetFrameworks>
|
||||
<TargetFrameworks>net20;net35;net40;net452;net462;net472;net48;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0;net10.0</TargetFrameworks>
|
||||
<OutputType>Exe</OutputType>
|
||||
<CheckEolTargetFramework>false</CheckEolTargetFramework>
|
||||
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
|
||||
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
<SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<Version>1.8.0</Version>
|
||||
<Version>2.2.1</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Support All Frameworks -->
|
||||
@@ -19,11 +20,11 @@
|
||||
<PropertyGroup Condition="$(TargetFramework.StartsWith(`netcoreapp`)) OR $(TargetFramework.StartsWith(`net5`))">
|
||||
<RuntimeIdentifiers>win-x86;win-x64;win-arm64;linux-x64;linux-arm64;osx-x64</RuntimeIdentifiers>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="$(TargetFramework.StartsWith(`net6`)) OR $(TargetFramework.StartsWith(`net7`)) OR $(TargetFramework.StartsWith(`net8`)) OR $(TargetFramework.StartsWith(`net9`))">
|
||||
<PropertyGroup Condition="$(TargetFramework.StartsWith(`net6`)) OR $(TargetFramework.StartsWith(`net7`)) OR $(TargetFramework.StartsWith(`net8`)) OR $(TargetFramework.StartsWith(`net9`)) OR $(TargetFramework.StartsWith(`net10`))">
|
||||
<RuntimeIdentifiers>win-x86;win-x64;win-arm64;linux-x64;linux-arm64;osx-x64;osx-arm64</RuntimeIdentifiers>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="$(RuntimeIdentifier.StartsWith(`osx-arm`))">
|
||||
<TargetFrameworks>net6.0;net7.0;net8.0;net9.0</TargetFrameworks>
|
||||
<TargetFrameworks>net6.0;net7.0;net8.0;net9.0;net10.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
@@ -31,7 +32,9 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="SabreTools.IO" Version="1.6.1" />
|
||||
<PackageReference Include="SabreTools.CommandLine" Version="[1.4.0]" />
|
||||
<PackageReference Include="SabreTools.Hashing" Version="[1.6.0]" />
|
||||
<PackageReference Include="SabreTools.IO" Version="[1.9.0]" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -1,119 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace InfoPrint
|
||||
{
|
||||
/// <summary>
|
||||
/// Set of options for the test executable
|
||||
/// </summary>
|
||||
internal sealed class Options
|
||||
{
|
||||
#region Properties
|
||||
|
||||
/// <summary>
|
||||
/// Enable debug output for relevant operations
|
||||
/// </summary>
|
||||
public bool Debug { get; private set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Set of input paths to use for operations
|
||||
/// </summary>
|
||||
public List<string> InputPaths { get; private set; } = [];
|
||||
|
||||
#if NETCOREAPP
|
||||
/// <summary>
|
||||
/// Enable JSON output
|
||||
/// </summary>
|
||||
public bool Json { get; private set; } = false;
|
||||
#endif
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Parse commandline arguments into an Options object
|
||||
/// </summary>
|
||||
public static Options? ParseOptions(string[] args)
|
||||
{
|
||||
// If we have invalid arguments
|
||||
if (args == null || args.Length == 0)
|
||||
return null;
|
||||
|
||||
// Create an Options object
|
||||
var options = new Options();
|
||||
|
||||
// Parse the features
|
||||
int index = 0;
|
||||
for (; index < args.Length; index++)
|
||||
{
|
||||
string arg = args[index];
|
||||
bool featureFound = false;
|
||||
switch (arg)
|
||||
{
|
||||
case "-?":
|
||||
case "-h":
|
||||
case "--help":
|
||||
return null;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// If the flag wasn't a feature
|
||||
if (!featureFound)
|
||||
break;
|
||||
}
|
||||
|
||||
// Parse the options and paths
|
||||
for (; index < args.Length; index++)
|
||||
{
|
||||
string arg = args[index];
|
||||
switch (arg)
|
||||
{
|
||||
case "-d":
|
||||
case "--debug":
|
||||
options.Debug = true;
|
||||
break;
|
||||
|
||||
case "-j":
|
||||
case "--json":
|
||||
#if NETCOREAPP
|
||||
options.Json = true;
|
||||
#else
|
||||
Console.WriteLine("JSON output not available in .NET Framework");
|
||||
#endif
|
||||
break;
|
||||
|
||||
default:
|
||||
options.InputPaths.Add(arg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Validate we have any input paths to work on
|
||||
if (options.InputPaths.Count == 0)
|
||||
{
|
||||
Console.WriteLine("At least one path is required!");
|
||||
return null;
|
||||
}
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Display help text
|
||||
/// </summary>
|
||||
public static void DisplayHelp()
|
||||
{
|
||||
Console.WriteLine("Information Printing Program");
|
||||
Console.WriteLine();
|
||||
Console.WriteLine("infoprint.exe <options> file|directory ...");
|
||||
Console.WriteLine();
|
||||
Console.WriteLine("Options:");
|
||||
Console.WriteLine("-?, -h, --help Display this help text and quit");
|
||||
Console.WriteLine("-d, --debug Enable debug mode");
|
||||
#if NETCOREAPP
|
||||
Console.WriteLine("-j, --json Print info as JSON");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using SabreTools.IO.Extensions;
|
||||
using SabreTools.Serialization;
|
||||
using SabreTools.Serialization.Wrappers;
|
||||
using System.Collections.Generic;
|
||||
using InfoPrint.Features;
|
||||
using SabreTools.CommandLine;
|
||||
using SabreTools.CommandLine.Features;
|
||||
|
||||
namespace InfoPrint
|
||||
{
|
||||
@@ -10,123 +10,69 @@ namespace InfoPrint
|
||||
{
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
// Get the options from the arguments
|
||||
var options = Options.ParseOptions(args);
|
||||
// Create the command set
|
||||
var mainFeature = new MainFeature();
|
||||
var commandSet = CreateCommands(mainFeature);
|
||||
|
||||
// If we have an invalid state
|
||||
if (options == null)
|
||||
// If we have no args, show the help and quit
|
||||
if (args is null || args.Length == 0)
|
||||
{
|
||||
Options.DisplayHelp();
|
||||
commandSet.OutputAllHelp();
|
||||
return;
|
||||
}
|
||||
|
||||
// Loop through the input paths
|
||||
foreach (string inputPath in options.InputPaths)
|
||||
// Cache the first argument and starting index
|
||||
string featureName = args[0];
|
||||
|
||||
// Try processing the standalone arguments
|
||||
var topLevel = commandSet.GetTopLevel(featureName);
|
||||
switch (topLevel)
|
||||
{
|
||||
#if NETFRAMEWORK
|
||||
PrintPathInfo(inputPath, false, options.Debug);
|
||||
#else
|
||||
PrintPathInfo(inputPath, options.Json, options.Debug);
|
||||
#endif
|
||||
// Standalone Options
|
||||
case Help help: help.ProcessArgs(args, 0, commandSet); return;
|
||||
|
||||
// Default Behavior
|
||||
default:
|
||||
if (!mainFeature.ProcessArgs(args, 0))
|
||||
{
|
||||
commandSet.OutputAllHelp();
|
||||
return;
|
||||
}
|
||||
else if (!mainFeature.VerifyInputs())
|
||||
{
|
||||
Console.Error.WriteLine("At least one input is required");
|
||||
commandSet.OutputAllHelp();
|
||||
return;
|
||||
}
|
||||
|
||||
mainFeature.Execute();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Wrapper to print information for a single path
|
||||
/// Create the command set for the program
|
||||
/// </summary>
|
||||
/// <param name="path">File or directory path</param>
|
||||
/// <param name="json">Enable JSON output, if supported</param>
|
||||
/// <param name="debug">Enable debug output</param>
|
||||
private static void PrintPathInfo(string path, bool json, bool debug)
|
||||
private static CommandSet CreateCommands(MainFeature mainFeature)
|
||||
{
|
||||
Console.WriteLine($"Checking possible path: {path}");
|
||||
List<string> header = [
|
||||
"Information Printing Program",
|
||||
string.Empty,
|
||||
"InfoPrint <options> file|directory ...",
|
||||
string.Empty,
|
||||
];
|
||||
|
||||
// Check if the file or directory exists
|
||||
if (File.Exists(path))
|
||||
{
|
||||
PrintFileInfo(path, json, debug);
|
||||
}
|
||||
else if (Directory.Exists(path))
|
||||
{
|
||||
foreach (string file in IOExtensions.SafeEnumerateFiles(path, "*", SearchOption.AllDirectories))
|
||||
{
|
||||
PrintFileInfo(file, json, debug);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"{path} does not exist, skipping...");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Print information for a single file, if possible
|
||||
/// </summary>
|
||||
private static void PrintFileInfo(string file, bool json, bool debug)
|
||||
{
|
||||
Console.WriteLine($"Attempting to print info for {file}");
|
||||
|
||||
try
|
||||
{
|
||||
using Stream stream = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
|
||||
|
||||
// Read the first 8 bytes
|
||||
byte[]? magic = stream.ReadBytes(8);
|
||||
stream.Seek(0, SeekOrigin.Begin);
|
||||
|
||||
// Get the file type
|
||||
string extension = Path.GetExtension(file).TrimStart('.');
|
||||
WrapperType ft = WrapperFactory.GetFileType(magic ?? [], extension);
|
||||
|
||||
// Print out the file format
|
||||
Console.WriteLine($"File format found: {ft}");
|
||||
|
||||
// Setup the wrapper to print
|
||||
var wrapper = WrapperFactory.CreateWrapper(ft, stream);
|
||||
|
||||
// If we don't have a wrapper
|
||||
if (wrapper == null)
|
||||
{
|
||||
Console.WriteLine($"Either {ft} is not supported or something went wrong during parsing!");
|
||||
Console.WriteLine();
|
||||
return;
|
||||
}
|
||||
|
||||
// Get the base info output name
|
||||
string filenameBase = $"info-{DateTime.Now:yyyy-MM-dd_HHmmss.ffff}";
|
||||
var commandSet = new CommandSet(header);
|
||||
|
||||
commandSet.Add(new Help(["-?", "-h", "--help"]));
|
||||
commandSet.Add(mainFeature.DebugInput);
|
||||
commandSet.Add(mainFeature.HashInput);
|
||||
commandSet.Add(mainFeature.FileOnlyInput);
|
||||
#if NETCOREAPP
|
||||
// If we have the JSON flag
|
||||
if (json)
|
||||
{
|
||||
// Create the output data
|
||||
string serializedData = wrapper.ExportJSON();
|
||||
Console.WriteLine(serializedData);
|
||||
|
||||
// Write the output data
|
||||
using var jsw = new StreamWriter(File.OpenWrite($"{filenameBase}.json"));
|
||||
jsw.WriteLine(serializedData);
|
||||
}
|
||||
commandSet.Add(mainFeature.JsonInput);
|
||||
#endif
|
||||
|
||||
// Create the output data
|
||||
var builder = wrapper.ExportStringBuilder();
|
||||
if (builder == null)
|
||||
{
|
||||
Console.WriteLine("No item information could be generated");
|
||||
return;
|
||||
}
|
||||
|
||||
// Write the output data
|
||||
Console.WriteLine(builder);
|
||||
using var sw = new StreamWriter(File.OpenWrite($"{filenameBase}.txt"));
|
||||
sw.WriteLine(builder.ToString());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(debug ? ex : "[Exception opening file, please try again]");
|
||||
Console.WriteLine();
|
||||
}
|
||||
return commandSet;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
7
LICENSE
Normal file
7
LICENSE
Normal file
@@ -0,0 +1,7 @@
|
||||
Copyright (c) 2018-2025 Matt Nadareski
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
103
README.MD
103
README.MD
@@ -1,37 +1,108 @@
|
||||
# SabreTools.Serialization
|
||||
|
||||
[](https://github.com/SabreTools/SabreTools.Serialization/actions/workflows/build_and_test.yml)
|
||||
|
||||
This library comprises of serializers that both read and write from files and streams to the dedicated models as well as convert to and from the common internal models. This library is partially used by the current parsing and writing code but none of the internal model serialization is used.
|
||||
|
||||
Find the link to the Nuget package [here](https://www.nuget.org/packages/SabreTools.Serialization).
|
||||
|
||||
The following non-project libraries (or ports thereof) are used for file handling:
|
||||
|
||||
- [GrindCore.SharpCompress](https://github.com/Nanook/GrindCore.SharpCompress) - Common archive format extraction
|
||||
- [StormLibSharp](https://github.com/robpaveza/stormlibsharp) - MoPaQ extraction [Unused in non-Windows builds due to Windows-specific libraries]
|
||||
|
||||
The following projects have influenced this library:
|
||||
|
||||
- [libmspack](https://github.com/kyz/libmspack) - Documentation around the MS-CAB format and associated compression methods.
|
||||
- [Unshield](https://github.com/twogood/unshield/) - InstallShield CAB extraction tool that influenced internal handling
|
||||
|
||||
## Releases
|
||||
|
||||
For the most recent stable build, download the latest release here: [Releases Page](https://github.com/SabreTools/SabreTools.Serialization/releases)
|
||||
|
||||
For the latest WIP build here: [Rolling Release](https://github.com/SabreTools/SabreTools.Serialization/releases/tag/rolling)
|
||||
|
||||
## InfoPrint
|
||||
|
||||
**InfoPrint** is a reference implementation for the deserialization and printing features of the library, packaged as a standalone executable for all supported platforms. It will attempt to detect and display information about many supported file types, optionally both hashing the file and outputting the information to a JSON file (.NET Core 3.1 and above only).
|
||||
|
||||
```text
|
||||
InfoPrint <options> file|directory ...
|
||||
|
||||
Options:
|
||||
-?, -h, --help Display this help text
|
||||
-d, --debug Enable debug mode
|
||||
-c, --hash Output file hashes
|
||||
-f, --file Print to file only
|
||||
-j, --json Print info as JSON
|
||||
```
|
||||
|
||||
## ExtractionTool
|
||||
|
||||
**ExtractionTool** is a reference implementation for the extraction features of the library, packaged as a standalone executable for all supported platforms. It will attempt to detect and extract many supported file types. See the table below for supported extraction functionality.
|
||||
|
||||
```text
|
||||
ExtractionTool <options> file|directory ...
|
||||
|
||||
Options:
|
||||
-?, -h, --help Display this help text
|
||||
-d, --debug Enable debug mode
|
||||
-o, --outdir [PATH] Set output path for extraction (required)
|
||||
```
|
||||
|
||||
| Format Name | Notes |
|
||||
| --- | --- |
|
||||
| 7-zip archive | .NET Framework 4.6.2 and greater |
|
||||
| BFPK custom archive format | |
|
||||
| bzip2 archive | .NET Framework 4.6.2 and greater |
|
||||
| Compound File Binary (CFB) | Only CFB common pieces extractable |
|
||||
| gzip archive | |
|
||||
| Half-Life Game Cache File (GCF) | |
|
||||
| Half-Life Level (BSP) | |
|
||||
| Half-Life Package File (PAK) | |
|
||||
| Half-Life Texture Package File (WAD3) | |
|
||||
| Half-Life 2 Level (VBSP) | |
|
||||
| InstallShield Archive V3 (Z) | |
|
||||
| InstallShield CAB | |
|
||||
| Microsoft cabinet file | Does not support LZX or Quantum compression |
|
||||
| Microsoft LZ-compressed files | KWAJ, QBasic, and SZDD variants |
|
||||
| MoPaQ game data archive (MPQ) | Windows only |
|
||||
| New Exectuable | Embedded archives and executables in the overlay and Wise installer |
|
||||
| NovaLogic Game Archive Format (PFF) | |
|
||||
| PKZIP and derived files (ZIP, etc.) | .NET Framework 4.6.2 and greater |
|
||||
| Portable Executable | Embedded archives and executables in the resources and overlay, CExe-packed data, SFX archives (7-zip, PKZIP, and RAR), and Wise installer |
|
||||
| Quantum archive (Q) | Currently not working |
|
||||
| RAR archive (RAR) | .NET Framework 4.6.2 and greater |
|
||||
| SGA game archive | |
|
||||
| Tape archive (TAR) | |
|
||||
| Valve Package File (VPK) | |
|
||||
| XBox Package File (XZP) | |
|
||||
| xz archive (XZ) | .NET Framework 4.6.2 and greater |
|
||||
|
||||
## Interfaces
|
||||
|
||||
Below is a table representing the various conversion interfaces that are implemented within this library.
|
||||
|
||||
| Interface Name | Source Type | Destination Type |
|
||||
| --- | --- | --- |
|
||||
| `IByteDeserializer` | `byte[]?` | Model |
|
||||
| `IByteSerializer` | Model | `byte[]?` |
|
||||
| `IFileDeserializer` | `string?` path | Model |
|
||||
| `IFileSerializer` | Model | `string?` path |
|
||||
| `IModelSerializer` | Model | Model |
|
||||
| `IStreamDeserializer` | `Stream?` | Model |
|
||||
| `IStreamSerializer` | Model | `Stream?` |
|
||||
| `IStringDeserializer` | `string?` representation | Model |
|
||||
| `IStringSerializer` | Model | `string?` representation |
|
||||
| `SabreTools.Serialization.Interfaces.IByteReader<TModel>` | `byte[]?` | `TModel` |
|
||||
| `SabreTools.Serialization.Interfaces.IByteWriter<TModel>` | `TModel` | `byte[]?` |
|
||||
| `SabreTools.Serialization.Interfaces.ICrossModel<TSource, TDest>` | `TSource`/`TDest` | `TDest`/`TSource` |
|
||||
| `SabreTools.Serialization.Interfaces.IFileReader<TModel>` | `string?` path | `TModel` |
|
||||
| `SabreTools.Serialization.Interfaces.IFileWriter<TModel>` | `TModel` | `string?` path |
|
||||
| `SabreTools.Serialization.Interfaces.IStreamReader<TModel>` | `Stream?` | `TModel` |
|
||||
| `SabreTools.Serialization.Interfaces.IStreamWriter<TModel>` | `TModel` | `Stream?` |
|
||||
| `SabreTools.Serialization.Interfaces.IStringReader<TModel>` | `string?` representation | `TModel` |
|
||||
| `SabreTools.Serialization.Interfaces.IStringWriter<TModel>` | `TModel` | `string?` representation |
|
||||
|
||||
Below is a table representing the various non-conversion interfaces that are implemented within this library.
|
||||
|
||||
| Interface Name | Purpose |
|
||||
| --- | --- |
|
||||
| `IPrinter` | Provides a formatted output for a model |
|
||||
| `IWrapper` / `IWrapper<T>` | Wraps a model or set of models to provide additional functionality |
|
||||
| `SabreTools.Serialization.Wrappers.IExtractable` | Marks a wrapper as able to be extracted |
|
||||
| `SabreTools.Serialization.Wrappers.IPrintable` | Marks a wrapper as able to print model information |
|
||||
| `SabreTools.Serialization.Wrappers.IWrapper` | Represents an item with a description and JSON serializable state, allowing for extensions |
|
||||
| `SabreTools.Serialization.Wrappers.IWrapper<TModel>` | Wraps a model with source data, allowing for extensions |
|
||||
|
||||
## Namespaces
|
||||
|
||||
@@ -39,8 +110,12 @@ Below is a table of all namespaces within the library and what they represent
|
||||
|
||||
| Namespace | Description |
|
||||
| --- | --- |
|
||||
| `SabreTools.Data.Attributes` | Common attributes for data marking and manipulation |
|
||||
| `SabreTools.Data.Extensions` | Extension methods related to models |
|
||||
| `SabreTools.Data.Models` | Models representing different file and structure types |
|
||||
| `SabreTools.Data.ObjectIdentifier` | Object Identifier (OID) parsing |
|
||||
| `SabreTools.Serialization.CrossModel` | Convert between models; mainly used for metadata files converting to and from a common, `Dictionary`-based model |
|
||||
| `SabreTools.Serialization.Deserializers` | Convert from external sources to models |
|
||||
| `SabreTools.Serialization.Printers` | Export model information in a formatted manner |
|
||||
| `SabreTools.Serialization.Serializers` | Convert from models to external sources |
|
||||
| `SabreTools.Serialization.Interfaces` | Interfaces used commonly throughout the library |
|
||||
| `SabreTools.Serialization.Readers` | Convert from external sources to models |
|
||||
| `SabreTools.Serialization.Wrappers` | Classes that wrap serialization and models to allow for including extension properties |
|
||||
| `SabreTools.Serialization.Writers` | Convert from models to external sources |
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using SabreTools.Serialization.CrossModel;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.CrossModel
|
||||
@@ -8,17 +9,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.ArchiveDotOrg();
|
||||
var serializer = new ArchiveDotOrg();
|
||||
|
||||
// Build the data
|
||||
Models.ArchiveDotOrg.Files files = Build();
|
||||
Data.Models.ArchiveDotOrg.Files files = Build();
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(files);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(files);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.ArchiveDotOrg.Files? newFiles = serializer.Deserialize(metadata);
|
||||
Data.Models.ArchiveDotOrg.Files? newFiles = serializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newFiles);
|
||||
@@ -30,9 +31,9 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.ArchiveDotOrg.Files Build()
|
||||
private static Data.Models.ArchiveDotOrg.Files Build()
|
||||
{
|
||||
var file = new Models.ArchiveDotOrg.File
|
||||
var file = new Data.Models.ArchiveDotOrg.File
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Source = "XXXXXX",
|
||||
@@ -96,7 +97,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Width = "XXXXXX",
|
||||
};
|
||||
|
||||
return new Models.ArchiveDotOrg.Files
|
||||
return new Data.Models.ArchiveDotOrg.Files
|
||||
{
|
||||
File = [file]
|
||||
};
|
||||
@@ -105,7 +106,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a File
|
||||
/// </summary>
|
||||
private static void Validate(Models.ArchiveDotOrg.File? file)
|
||||
private static void Validate(Data.Models.ArchiveDotOrg.File? file)
|
||||
{
|
||||
Assert.NotNull(file);
|
||||
Assert.Equal("XXXXXX", file.Name);
|
||||
@@ -170,4 +171,4 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Assert.Equal("XXXXXX", file.Width);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using SabreTools.Serialization.CrossModel;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.CrossModel
|
||||
@@ -8,17 +9,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.AttractMode();
|
||||
var serializer = new AttractMode();
|
||||
|
||||
// Build the data
|
||||
Models.AttractMode.MetadataFile mf = Build();
|
||||
Data.Models.AttractMode.MetadataFile mf = Build();
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(mf);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(mf);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.AttractMode.MetadataFile? newMf = serializer.Deserialize(metadata);
|
||||
Data.Models.AttractMode.MetadataFile? newMf = serializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
@@ -31,11 +32,11 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.AttractMode.MetadataFile Build()
|
||||
private static Data.Models.AttractMode.MetadataFile Build()
|
||||
{
|
||||
string[] header = ["header"];
|
||||
|
||||
var row = new Models.AttractMode.Row
|
||||
var row = new Data.Models.AttractMode.Row
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Title = "XXXXXX",
|
||||
@@ -61,7 +62,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
FileIsAvailable = "XXXXXX",
|
||||
};
|
||||
|
||||
return new Models.AttractMode.MetadataFile
|
||||
return new Data.Models.AttractMode.MetadataFile
|
||||
{
|
||||
Header = header,
|
||||
Row = [row],
|
||||
@@ -81,7 +82,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Row
|
||||
/// </summary>
|
||||
private static void Validate(Models.AttractMode.Row? row)
|
||||
private static void Validate(Data.Models.AttractMode.Row? row)
|
||||
{
|
||||
Assert.NotNull(row);
|
||||
Assert.Equal("XXXXXX", row.Name);
|
||||
@@ -108,4 +109,4 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Assert.Equal("XXXXXX", row.FileIsAvailable);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using SabreTools.Serialization.CrossModel;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.CrossModel
|
||||
@@ -8,17 +9,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripGameTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.ClrMamePro();
|
||||
var serializer = new ClrMamePro();
|
||||
|
||||
// Build the data
|
||||
Models.ClrMamePro.MetadataFile mf = Build(game: true);
|
||||
Data.Models.ClrMamePro.MetadataFile mf = Build(game: true);
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(mf);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(mf);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.ClrMamePro.MetadataFile? newMf = serializer.Deserialize(metadata, game: true);
|
||||
Data.Models.ClrMamePro.MetadataFile? newMf = serializer.Deserialize(metadata, game: true);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
@@ -26,23 +27,24 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Assert.NotNull(newMf.Game);
|
||||
var newGame = Assert.Single(newMf.Game);
|
||||
Validate(newGame);
|
||||
Validate(newMf.Info);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RoundTripMachineTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.ClrMamePro();
|
||||
var serializer = new ClrMamePro();
|
||||
|
||||
// Build the data
|
||||
Models.ClrMamePro.MetadataFile mf = Build(game: false);
|
||||
Data.Models.ClrMamePro.MetadataFile mf = Build(game: false);
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(mf);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(mf);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.ClrMamePro.MetadataFile? newMf = serializer.Deserialize(metadata, game: false);
|
||||
Data.Models.ClrMamePro.MetadataFile? newMf = serializer.Deserialize(metadata, game: false);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
@@ -50,14 +52,15 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Assert.NotNull(newMf.Game);
|
||||
var newGame = Assert.Single(newMf.Game);
|
||||
Validate(newGame);
|
||||
Validate(newMf.Info);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.ClrMamePro.MetadataFile Build(bool game)
|
||||
private static Data.Models.ClrMamePro.MetadataFile Build(bool game)
|
||||
{
|
||||
var cmp = new Models.ClrMamePro.ClrMamePro
|
||||
var cmp = new Data.Models.ClrMamePro.ClrMamePro
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Description = "XXXXXX",
|
||||
@@ -76,7 +79,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
ForcePacking = "XXXXXX",
|
||||
};
|
||||
|
||||
var release = new Models.ClrMamePro.Release
|
||||
var release = new Data.Models.ClrMamePro.Release
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Region = "XXXXXX",
|
||||
@@ -85,19 +88,25 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var biosset = new Models.ClrMamePro.BiosSet
|
||||
var biosset = new Data.Models.ClrMamePro.BiosSet
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Description = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var rom = new Models.ClrMamePro.Rom
|
||||
var rom = new Data.Models.ClrMamePro.Rom
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Size = "XXXXXX",
|
||||
CRC16 = "XXXXXX",
|
||||
CRC = "XXXXXX",
|
||||
CRC64 = "XXXXXX",
|
||||
MD2 = "XXXXXX",
|
||||
MD4 = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
RIPEMD128 = "XXXXXX",
|
||||
RIPEMD160 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
Merge = "XXXXXX",
|
||||
Status = "XXXXXX",
|
||||
@@ -117,7 +126,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
MIA = "XXXXXX",
|
||||
};
|
||||
|
||||
var disk = new Models.ClrMamePro.Disk
|
||||
var disk = new Data.Models.ClrMamePro.Disk
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
@@ -127,17 +136,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Flags = "XXXXXX",
|
||||
};
|
||||
|
||||
var sample = new Models.ClrMamePro.Sample
|
||||
var sample = new Data.Models.ClrMamePro.Sample
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var archive = new Models.ClrMamePro.Archive
|
||||
var archive = new Data.Models.ClrMamePro.Archive
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var media = new Models.ClrMamePro.Media
|
||||
var media = new Data.Models.ClrMamePro.Media
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
@@ -146,7 +155,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
SpamSum = "XXXXXX",
|
||||
};
|
||||
|
||||
var chip = new Models.ClrMamePro.Chip
|
||||
var chip = new Data.Models.ClrMamePro.Chip
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Name = "XXXXXX",
|
||||
@@ -154,7 +163,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Clock = "XXXXXX",
|
||||
};
|
||||
|
||||
var video = new Models.ClrMamePro.Video
|
||||
var video = new Data.Models.ClrMamePro.Video
|
||||
{
|
||||
Screen = "XXXXXX",
|
||||
Orientation = "XXXXXX",
|
||||
@@ -165,12 +174,12 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Freq = "XXXXXX",
|
||||
};
|
||||
|
||||
var sound = new Models.ClrMamePro.Sound
|
||||
var sound = new Data.Models.ClrMamePro.Sound
|
||||
{
|
||||
Channels = "XXXXXX",
|
||||
};
|
||||
|
||||
var input = new Models.ClrMamePro.Input
|
||||
var input = new Data.Models.ClrMamePro.Input
|
||||
{
|
||||
Players = "XXXXXX",
|
||||
Control = "XXXXXX",
|
||||
@@ -180,14 +189,14 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Service = "XXXXXX",
|
||||
};
|
||||
|
||||
var dipswitch = new Models.ClrMamePro.DipSwitch
|
||||
var dipswitch = new Data.Models.ClrMamePro.DipSwitch
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Entry = ["XXXXXX"],
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var driver = new Models.ClrMamePro.Driver
|
||||
var driver = new Data.Models.ClrMamePro.Driver
|
||||
{
|
||||
Status = "XXXXXX",
|
||||
Color = "XXXXXX",
|
||||
@@ -197,11 +206,12 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
};
|
||||
|
||||
// TODO: This omits Set, should that have a separate case?
|
||||
Models.ClrMamePro.GameBase gameBase = game
|
||||
? new Models.ClrMamePro.Game()
|
||||
: new Models.ClrMamePro.Machine();
|
||||
Data.Models.ClrMamePro.GameBase gameBase = game
|
||||
? new Data.Models.ClrMamePro.Game()
|
||||
: new Data.Models.ClrMamePro.Machine();
|
||||
gameBase.Name = "XXXXXX";
|
||||
gameBase.Description = "XXXXXX";
|
||||
gameBase.DriverStatus = "XXXXXX";
|
||||
gameBase.Year = "XXXXXX";
|
||||
gameBase.Manufacturer = "XXXXXX";
|
||||
gameBase.Category = "XXXXXX";
|
||||
@@ -222,17 +232,23 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
gameBase.DipSwitch = [dipswitch];
|
||||
gameBase.Driver = driver;
|
||||
|
||||
return new Models.ClrMamePro.MetadataFile
|
||||
var info = new Data.Models.ClrMamePro.Info
|
||||
{
|
||||
Source = ["XXXXXX"],
|
||||
};
|
||||
|
||||
return new Data.Models.ClrMamePro.MetadataFile
|
||||
{
|
||||
ClrMamePro = cmp,
|
||||
Game = [gameBase],
|
||||
Info = info,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a ClrMamePro
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.ClrMamePro? cmp)
|
||||
private static void Validate(Data.Models.ClrMamePro.ClrMamePro? cmp)
|
||||
{
|
||||
Assert.NotNull(cmp);
|
||||
Assert.Equal("XXXXXX", cmp.Name);
|
||||
@@ -255,11 +271,12 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a GameBase
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.GameBase? gb)
|
||||
private static void Validate(Data.Models.ClrMamePro.GameBase? gb)
|
||||
{
|
||||
Assert.NotNull(gb);
|
||||
Assert.Equal("XXXXXX", gb.Name);
|
||||
Assert.Equal("XXXXXX", gb.Description);
|
||||
// Assert.Equal("XXXXXX", gb.DriverStatus); // TODO: Needs metadata mapping
|
||||
Assert.Equal("XXXXXX", gb.Year);
|
||||
Assert.Equal("XXXXXX", gb.Manufacturer);
|
||||
Assert.Equal("XXXXXX", gb.Category);
|
||||
@@ -316,7 +333,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Release
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Release? release)
|
||||
private static void Validate(Data.Models.ClrMamePro.Release? release)
|
||||
{
|
||||
Assert.NotNull(release);
|
||||
Assert.Equal("XXXXXX", release.Name);
|
||||
@@ -329,7 +346,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a BiosSet
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.BiosSet? biosset)
|
||||
private static void Validate(Data.Models.ClrMamePro.BiosSet? biosset)
|
||||
{
|
||||
Assert.NotNull(biosset);
|
||||
Assert.Equal("XXXXXX", biosset.Name);
|
||||
@@ -340,13 +357,19 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Rom
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Rom? rom)
|
||||
private static void Validate(Data.Models.ClrMamePro.Rom? rom)
|
||||
{
|
||||
Assert.NotNull(rom);
|
||||
Assert.Equal("XXXXXX", rom.Name);
|
||||
Assert.Equal("XXXXXX", rom.Size);
|
||||
Assert.Equal("XXXXXX", rom.CRC16);
|
||||
Assert.Equal("XXXXXX", rom.CRC);
|
||||
Assert.Equal("XXXXXX", rom.CRC64);
|
||||
Assert.Equal("XXXXXX", rom.MD2);
|
||||
Assert.Equal("XXXXXX", rom.MD4);
|
||||
Assert.Equal("XXXXXX", rom.MD5);
|
||||
Assert.Equal("XXXXXX", rom.RIPEMD128);
|
||||
Assert.Equal("XXXXXX", rom.RIPEMD160);
|
||||
Assert.Equal("XXXXXX", rom.SHA1);
|
||||
Assert.Equal("XXXXXX", rom.Merge);
|
||||
Assert.Equal("XXXXXX", rom.Status);
|
||||
@@ -369,7 +392,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Disk
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Disk? disk)
|
||||
private static void Validate(Data.Models.ClrMamePro.Disk? disk)
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("XXXXXX", disk.Name);
|
||||
@@ -383,7 +406,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Sample
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Sample? sample)
|
||||
private static void Validate(Data.Models.ClrMamePro.Sample? sample)
|
||||
{
|
||||
Assert.NotNull(sample);
|
||||
Assert.Equal("XXXXXX", sample.Name);
|
||||
@@ -392,7 +415,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Archive
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Archive? archive)
|
||||
private static void Validate(Data.Models.ClrMamePro.Archive? archive)
|
||||
{
|
||||
Assert.NotNull(archive);
|
||||
Assert.Equal("XXXXXX", archive.Name);
|
||||
@@ -401,7 +424,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Media
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Media? media)
|
||||
private static void Validate(Data.Models.ClrMamePro.Media? media)
|
||||
{
|
||||
Assert.NotNull(media);
|
||||
Assert.Equal("XXXXXX", media.Name);
|
||||
@@ -414,7 +437,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Chip
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Chip? chip)
|
||||
private static void Validate(Data.Models.ClrMamePro.Chip? chip)
|
||||
{
|
||||
Assert.NotNull(chip);
|
||||
Assert.Equal("XXXXXX", chip.Type);
|
||||
@@ -426,7 +449,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Video
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Video? video)
|
||||
private static void Validate(Data.Models.ClrMamePro.Video? video)
|
||||
{
|
||||
Assert.NotNull(video);
|
||||
Assert.Equal("XXXXXX", video.Screen);
|
||||
@@ -441,7 +464,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Sound
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Sound? sound)
|
||||
private static void Validate(Data.Models.ClrMamePro.Sound? sound)
|
||||
{
|
||||
Assert.NotNull(sound);
|
||||
Assert.Equal("XXXXXX", sound.Channels);
|
||||
@@ -450,7 +473,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Input
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Input? input)
|
||||
private static void Validate(Data.Models.ClrMamePro.Input? input)
|
||||
{
|
||||
Assert.NotNull(input);
|
||||
Assert.Equal("XXXXXX", input.Players);
|
||||
@@ -464,7 +487,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a DipSwitch
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.DipSwitch? dipswitch)
|
||||
private static void Validate(Data.Models.ClrMamePro.DipSwitch? dipswitch)
|
||||
{
|
||||
Assert.NotNull(dipswitch);
|
||||
Assert.Equal("XXXXXX", dipswitch.Name);
|
||||
@@ -479,7 +502,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Driver
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Driver? driver)
|
||||
private static void Validate(Data.Models.ClrMamePro.Driver? driver)
|
||||
{
|
||||
Assert.NotNull(driver);
|
||||
Assert.Equal("XXXXXX", driver.Status);
|
||||
@@ -488,5 +511,16 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Assert.Equal("XXXXXX", driver.PaletteSize);
|
||||
Assert.Equal("XXXXXX", driver.Blit);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a ClrMamePro
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.ClrMamePro.Info? info)
|
||||
{
|
||||
Assert.NotNull(info);
|
||||
Assert.NotNull(info.Source);
|
||||
string source = Assert.Single(info.Source);
|
||||
Assert.Equal("XXXXXX", source);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using SabreTools.Serialization.CrossModel;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.CrossModel
|
||||
@@ -8,17 +9,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.DosCenter();
|
||||
var serializer = new DosCenter();
|
||||
|
||||
// Build the data
|
||||
Models.DosCenter.MetadataFile mf = Build();
|
||||
Data.Models.DosCenter.MetadataFile mf = Build();
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(mf);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(mf);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.DosCenter.MetadataFile? newMf = serializer.Deserialize(metadata);
|
||||
Data.Models.DosCenter.MetadataFile? newMf = serializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
@@ -31,9 +32,9 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.DosCenter.MetadataFile Build()
|
||||
private static Data.Models.DosCenter.MetadataFile Build()
|
||||
{
|
||||
var dc = new Models.DosCenter.DosCenter
|
||||
var dc = new Data.Models.DosCenter.DosCenter
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Description = "XXXXXX",
|
||||
@@ -44,21 +45,22 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Comment = "XXXXXX",
|
||||
};
|
||||
|
||||
var file = new Models.DosCenter.File
|
||||
var file = new Data.Models.DosCenter.File
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Size = "XXXXXX",
|
||||
CRC = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
Date = "XXXXXX",
|
||||
};
|
||||
|
||||
var game = new Models.DosCenter.Game
|
||||
var game = new Data.Models.DosCenter.Game
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
File = [file],
|
||||
};
|
||||
|
||||
return new Models.DosCenter.MetadataFile
|
||||
return new Data.Models.DosCenter.MetadataFile
|
||||
{
|
||||
DosCenter = dc,
|
||||
Game = [game],
|
||||
@@ -68,7 +70,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a DosCenter
|
||||
/// </summary>
|
||||
private static void Validate(Models.DosCenter.DosCenter? cmp)
|
||||
private static void Validate(Data.Models.DosCenter.DosCenter? cmp)
|
||||
{
|
||||
Assert.NotNull(cmp);
|
||||
Assert.Equal("XXXXXX", cmp.Name);
|
||||
@@ -83,7 +85,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Game
|
||||
/// </summary>
|
||||
private static void Validate(Models.DosCenter.Game? game)
|
||||
private static void Validate(Data.Models.DosCenter.Game? game)
|
||||
{
|
||||
Assert.NotNull(game);
|
||||
Assert.Equal("XXXXXX", game.Name);
|
||||
@@ -96,13 +98,14 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a File
|
||||
/// </summary>
|
||||
private static void Validate(Models.DosCenter.File? rom)
|
||||
private static void Validate(Data.Models.DosCenter.File? rom)
|
||||
{
|
||||
Assert.NotNull(rom);
|
||||
Assert.Equal("XXXXXX", rom.Name);
|
||||
Assert.Equal("XXXXXX", rom.Size);
|
||||
Assert.Equal("XXXXXX", rom.CRC);
|
||||
Assert.Equal("XXXXXX", rom.SHA1);
|
||||
Assert.Equal("XXXXXX", rom.Date);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using SabreTools.Serialization.CrossModel;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.CrossModel
|
||||
@@ -8,17 +9,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.EverdriveSMDB();
|
||||
var serializer = new EverdriveSMDB();
|
||||
|
||||
// Build the data
|
||||
Models.EverdriveSMDB.MetadataFile mf = Build();
|
||||
Data.Models.EverdriveSMDB.MetadataFile mf = Build();
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(mf);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(mf);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.EverdriveSMDB.MetadataFile? newMf = serializer.Deserialize(metadata);
|
||||
Data.Models.EverdriveSMDB.MetadataFile? newMf = serializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
@@ -30,9 +31,9 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.EverdriveSMDB.MetadataFile Build()
|
||||
private static Data.Models.EverdriveSMDB.MetadataFile Build()
|
||||
{
|
||||
var row = new Models.EverdriveSMDB.Row
|
||||
var row = new Data.Models.EverdriveSMDB.Row
|
||||
{
|
||||
SHA256 = "XXXXXX",
|
||||
Name = "XXXXXX",
|
||||
@@ -42,7 +43,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Size = "XXXXXX",
|
||||
};
|
||||
|
||||
return new Models.EverdriveSMDB.MetadataFile
|
||||
return new Data.Models.EverdriveSMDB.MetadataFile
|
||||
{
|
||||
Row = [row],
|
||||
};
|
||||
@@ -51,7 +52,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Row
|
||||
/// </summary>
|
||||
private static void Validate(Models.EverdriveSMDB.Row? row)
|
||||
private static void Validate(Data.Models.EverdriveSMDB.Row? row)
|
||||
{
|
||||
Assert.NotNull(row);
|
||||
Assert.Equal("XXXXXX", row.SHA256);
|
||||
@@ -62,4 +63,4 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Assert.Equal("XXXXXX", row.Size);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using SabreTools.Hashing;
|
||||
using SabreTools.Serialization.CrossModel;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.CrossModel
|
||||
@@ -10,17 +11,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripSFVTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.Hashfile();
|
||||
var serializer = new Hashfile();
|
||||
|
||||
// Build the data
|
||||
Models.Hashfile.Hashfile hf = Build(HashType.CRC32);
|
||||
Data.Models.Hashfile.Hashfile hf = Build(HashType.CRC32);
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(hf);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(hf);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Hashfile.Hashfile? newHf = serializer.Deserialize(metadata, HashType.CRC32);
|
||||
Data.Models.Hashfile.Hashfile? newHf = serializer.Deserialize(metadata, HashType.CRC32);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newHf);
|
||||
@@ -33,17 +34,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripMD2Test()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.Hashfile();
|
||||
var serializer = new Hashfile();
|
||||
|
||||
// Build the data
|
||||
Models.Hashfile.Hashfile hf = Build(HashType.MD2);
|
||||
Data.Models.Hashfile.Hashfile hf = Build(HashType.MD2);
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(hf);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(hf);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Hashfile.Hashfile? newHf = serializer.Deserialize(metadata, HashType.MD2);
|
||||
Data.Models.Hashfile.Hashfile? newHf = serializer.Deserialize(metadata, HashType.MD2);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newHf);
|
||||
@@ -56,17 +57,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripMD4Test()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.Hashfile();
|
||||
var serializer = new Hashfile();
|
||||
|
||||
// Build the data
|
||||
Models.Hashfile.Hashfile hf = Build(HashType.MD4);
|
||||
Data.Models.Hashfile.Hashfile hf = Build(HashType.MD4);
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(hf);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(hf);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Hashfile.Hashfile? newHf = serializer.Deserialize(metadata, HashType.MD4);
|
||||
Data.Models.Hashfile.Hashfile? newHf = serializer.Deserialize(metadata, HashType.MD4);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newHf);
|
||||
@@ -79,17 +80,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripMD5Test()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.Hashfile();
|
||||
var serializer = new Hashfile();
|
||||
|
||||
// Build the data
|
||||
Models.Hashfile.Hashfile hf = Build(HashType.MD5);
|
||||
Data.Models.Hashfile.Hashfile hf = Build(HashType.MD5);
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(hf);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(hf);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Hashfile.Hashfile? newHf = serializer.Deserialize(metadata, HashType.MD5);
|
||||
Data.Models.Hashfile.Hashfile? newHf = serializer.Deserialize(metadata, HashType.MD5);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newHf);
|
||||
@@ -102,17 +103,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripSHA1Test()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.Hashfile();
|
||||
var serializer = new Hashfile();
|
||||
|
||||
// Build the data
|
||||
Models.Hashfile.Hashfile hf = Build(HashType.SHA1);
|
||||
Data.Models.Hashfile.Hashfile hf = Build(HashType.SHA1);
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(hf);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(hf);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Hashfile.Hashfile? newHf = serializer.Deserialize(metadata, HashType.SHA1);
|
||||
Data.Models.Hashfile.Hashfile? newHf = serializer.Deserialize(metadata, HashType.SHA1);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newHf);
|
||||
@@ -125,17 +126,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripSHA256Test()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.Hashfile();
|
||||
var serializer = new Hashfile();
|
||||
|
||||
// Build the data
|
||||
Models.Hashfile.Hashfile hf = Build(HashType.SHA256);
|
||||
Data.Models.Hashfile.Hashfile hf = Build(HashType.SHA256);
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(hf);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(hf);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Hashfile.Hashfile? newHf = serializer.Deserialize(metadata, HashType.SHA256);
|
||||
Data.Models.Hashfile.Hashfile? newHf = serializer.Deserialize(metadata, HashType.SHA256);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newHf);
|
||||
@@ -148,17 +149,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripSHA384Test()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.Hashfile();
|
||||
var serializer = new Hashfile();
|
||||
|
||||
// Build the data
|
||||
Models.Hashfile.Hashfile hf = Build(HashType.SHA384);
|
||||
Data.Models.Hashfile.Hashfile hf = Build(HashType.SHA384);
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(hf);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(hf);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Hashfile.Hashfile? newHf = serializer.Deserialize(metadata, HashType.SHA384);
|
||||
Data.Models.Hashfile.Hashfile? newHf = serializer.Deserialize(metadata, HashType.SHA384);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newHf);
|
||||
@@ -171,17 +172,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripSHA512Test()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.Hashfile();
|
||||
var serializer = new Hashfile();
|
||||
|
||||
// Build the data
|
||||
Models.Hashfile.Hashfile hf = Build(HashType.SHA512);
|
||||
Data.Models.Hashfile.Hashfile hf = Build(HashType.SHA512);
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(hf);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(hf);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Hashfile.Hashfile? newHf = serializer.Deserialize(metadata, HashType.SHA512);
|
||||
Data.Models.Hashfile.Hashfile? newHf = serializer.Deserialize(metadata, HashType.SHA512);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newHf);
|
||||
@@ -194,17 +195,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripSpamSumTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.Hashfile();
|
||||
var serializer = new Hashfile();
|
||||
|
||||
// Build the data
|
||||
Models.Hashfile.Hashfile hf = Build(HashType.SpamSum);
|
||||
Data.Models.Hashfile.Hashfile hf = Build(HashType.SpamSum);
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(hf);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(hf);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Hashfile.Hashfile? newHf = serializer.Deserialize(metadata, HashType.SpamSum);
|
||||
Data.Models.Hashfile.Hashfile? newHf = serializer.Deserialize(metadata, HashType.SpamSum);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newHf);
|
||||
@@ -216,27 +217,29 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.Hashfile.Hashfile Build(HashType hashType)
|
||||
private static Data.Models.Hashfile.Hashfile Build(HashType hashType)
|
||||
{
|
||||
#pragma warning disable IDE0072
|
||||
return hashType switch
|
||||
{
|
||||
HashType.CRC32 => new Models.Hashfile.Hashfile { SFV = [new Models.Hashfile.SFV { File = "XXXXXX", Hash = "XXXXXX" }] },
|
||||
HashType.MD2 => new Models.Hashfile.Hashfile { MD2 = [new Models.Hashfile.MD2 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.MD4 => new Models.Hashfile.Hashfile { MD4 = [new Models.Hashfile.MD4 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.MD5 => new Models.Hashfile.Hashfile { MD5 = [new Models.Hashfile.MD5 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SHA1 => new Models.Hashfile.Hashfile { SHA1 = [new Models.Hashfile.SHA1 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SHA256 => new Models.Hashfile.Hashfile { SHA256 = [new Models.Hashfile.SHA256 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SHA384 => new Models.Hashfile.Hashfile { SHA384 = [new Models.Hashfile.SHA384 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SHA512 => new Models.Hashfile.Hashfile { SHA512 = [new Models.Hashfile.SHA512 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SpamSum => new Models.Hashfile.Hashfile { SpamSum = [new Models.Hashfile.SpamSum { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
_ => throw new ArgumentOutOfRangeException(),
|
||||
HashType.CRC32 => new Data.Models.Hashfile.Hashfile { SFV = [new Data.Models.Hashfile.SFV { File = "XXXXXX", Hash = "XXXXXX" }] },
|
||||
HashType.MD2 => new Data.Models.Hashfile.Hashfile { MD2 = [new Data.Models.Hashfile.MD2 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.MD4 => new Data.Models.Hashfile.Hashfile { MD4 = [new Data.Models.Hashfile.MD4 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.MD5 => new Data.Models.Hashfile.Hashfile { MD5 = [new Data.Models.Hashfile.MD5 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SHA1 => new Data.Models.Hashfile.Hashfile { SHA1 = [new Data.Models.Hashfile.SHA1 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SHA256 => new Data.Models.Hashfile.Hashfile { SHA256 = [new Data.Models.Hashfile.SHA256 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SHA384 => new Data.Models.Hashfile.Hashfile { SHA384 = [new Data.Models.Hashfile.SHA384 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SHA512 => new Data.Models.Hashfile.Hashfile { SHA512 = [new Data.Models.Hashfile.SHA512 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SpamSum => new Data.Models.Hashfile.Hashfile { SpamSum = [new Data.Models.Hashfile.SpamSum { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(hashType)),
|
||||
};
|
||||
#pragma warning restore IDE0072
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a SFV
|
||||
/// </summary>
|
||||
private static void Validate(Models.Hashfile.SFV? sfv)
|
||||
private static void Validate(Data.Models.Hashfile.SFV? sfv)
|
||||
{
|
||||
Assert.NotNull(sfv);
|
||||
Assert.Equal("XXXXXX", sfv.File);
|
||||
@@ -246,7 +249,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a MD2
|
||||
/// </summary>
|
||||
private static void Validate(Models.Hashfile.MD2? md2)
|
||||
private static void Validate(Data.Models.Hashfile.MD2? md2)
|
||||
{
|
||||
Assert.NotNull(md2);
|
||||
Assert.Equal("XXXXXX", md2.Hash);
|
||||
@@ -256,7 +259,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a MD4
|
||||
/// </summary>
|
||||
private static void Validate(Models.Hashfile.MD4? md4)
|
||||
private static void Validate(Data.Models.Hashfile.MD4? md4)
|
||||
{
|
||||
Assert.NotNull(md4);
|
||||
Assert.Equal("XXXXXX", md4.Hash);
|
||||
@@ -266,7 +269,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a MD5
|
||||
/// </summary>
|
||||
private static void Validate(Models.Hashfile.MD5? md5)
|
||||
private static void Validate(Data.Models.Hashfile.MD5? md5)
|
||||
{
|
||||
Assert.NotNull(md5);
|
||||
Assert.Equal("XXXXXX", md5.Hash);
|
||||
@@ -276,7 +279,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a SHA1
|
||||
/// </summary>
|
||||
private static void Validate(Models.Hashfile.SHA1? sha1)
|
||||
private static void Validate(Data.Models.Hashfile.SHA1? sha1)
|
||||
{
|
||||
Assert.NotNull(sha1);
|
||||
Assert.Equal("XXXXXX", sha1.Hash);
|
||||
@@ -286,7 +289,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a SHA256
|
||||
/// </summary>
|
||||
private static void Validate(Models.Hashfile.SHA256? sha256)
|
||||
private static void Validate(Data.Models.Hashfile.SHA256? sha256)
|
||||
{
|
||||
Assert.NotNull(sha256);
|
||||
Assert.Equal("XXXXXX", sha256.Hash);
|
||||
@@ -296,7 +299,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a SHA384
|
||||
/// </summary>
|
||||
private static void Validate(Models.Hashfile.SHA384? sha384)
|
||||
private static void Validate(Data.Models.Hashfile.SHA384? sha384)
|
||||
{
|
||||
Assert.NotNull(sha384);
|
||||
Assert.Equal("XXXXXX", sha384.Hash);
|
||||
@@ -306,7 +309,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a SHA512
|
||||
/// </summary>
|
||||
private static void Validate(Models.Hashfile.SHA512? sha512)
|
||||
private static void Validate(Data.Models.Hashfile.SHA512? sha512)
|
||||
{
|
||||
Assert.NotNull(sha512);
|
||||
Assert.Equal("XXXXXX", sha512.Hash);
|
||||
@@ -316,11 +319,11 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a SpamSum
|
||||
/// </summary>
|
||||
private static void Validate(Models.Hashfile.SpamSum? spamsum)
|
||||
private static void Validate(Data.Models.Hashfile.SpamSum? spamsum)
|
||||
{
|
||||
Assert.NotNull(spamsum);
|
||||
Assert.Equal("XXXXXX", spamsum.Hash);
|
||||
Assert.Equal("XXXXXX", spamsum.File);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using SabreTools.Serialization.CrossModel;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.CrossModel
|
||||
@@ -8,17 +9,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.Listrom();
|
||||
var serializer = new Listrom();
|
||||
|
||||
// Build the data
|
||||
Models.Listrom.MetadataFile mf = Build();
|
||||
Data.Models.Listrom.MetadataFile mf = Build();
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(mf);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(mf);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Listrom.MetadataFile? newMf = serializer.Deserialize(metadata);
|
||||
Data.Models.Listrom.MetadataFile? newMf = serializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
@@ -32,9 +33,9 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.Listrom.MetadataFile Build()
|
||||
private static Data.Models.Listrom.MetadataFile Build()
|
||||
{
|
||||
var rom = new Models.Listrom.Row
|
||||
var rom = new Data.Models.Listrom.Row
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Size = "XXXXXX",
|
||||
@@ -44,7 +45,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
NoGoodDumpKnown = false,
|
||||
};
|
||||
|
||||
var disk = new Models.Listrom.Row
|
||||
var disk = new Data.Models.Listrom.Row
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Bad = false,
|
||||
@@ -53,19 +54,19 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
NoGoodDumpKnown = true,
|
||||
};
|
||||
|
||||
var device = new Models.Listrom.Set()
|
||||
var device = new Data.Models.Listrom.Set()
|
||||
{
|
||||
Device = "XXXXXX",
|
||||
Row = [rom],
|
||||
};
|
||||
|
||||
var driver = new Models.Listrom.Set()
|
||||
var driver = new Data.Models.Listrom.Set()
|
||||
{
|
||||
Driver = "XXXXXX",
|
||||
Row = [disk],
|
||||
};
|
||||
|
||||
return new Models.Listrom.MetadataFile
|
||||
return new Data.Models.Listrom.MetadataFile
|
||||
{
|
||||
Set = [device, driver],
|
||||
};
|
||||
@@ -74,7 +75,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Set
|
||||
/// </summary>
|
||||
private static void ValidateDevice(Models.Listrom.Set? set)
|
||||
private static void ValidateDevice(Data.Models.Listrom.Set? set)
|
||||
{
|
||||
Assert.NotNull(set);
|
||||
Assert.Equal("XXXXXX", set.Device);
|
||||
@@ -87,7 +88,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Set
|
||||
/// </summary>
|
||||
private static void ValidateDriver(Models.Listrom.Set? set)
|
||||
private static void ValidateDriver(Data.Models.Listrom.Set? set)
|
||||
{
|
||||
Assert.NotNull(set);
|
||||
Assert.Equal("XXXXXX", set.Driver);
|
||||
@@ -100,7 +101,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Row
|
||||
/// </summary>
|
||||
private static void ValidateRom(Models.Listrom.Row? row)
|
||||
private static void ValidateRom(Data.Models.Listrom.Row? row)
|
||||
{
|
||||
Assert.NotNull(row);
|
||||
Assert.Equal("XXXXXX", row.Name);
|
||||
@@ -114,7 +115,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Row
|
||||
/// </summary>
|
||||
private static void ValidateDisk(Models.Listrom.Row? row)
|
||||
private static void ValidateDisk(Data.Models.Listrom.Row? row)
|
||||
{
|
||||
Assert.NotNull(row);
|
||||
Assert.Equal("XXXXXX", row.Name);
|
||||
@@ -124,4 +125,4 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Assert.True(row.NoGoodDumpKnown);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using SabreTools.Serialization.CrossModel;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.CrossModel
|
||||
@@ -8,17 +9,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripGameTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.Listxml();
|
||||
var serializer = new Listxml();
|
||||
|
||||
// Build the data
|
||||
Models.Listxml.Mame mame = Build(game: true);
|
||||
Data.Models.Listxml.Mame mame = Build(game: true);
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(mame);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(mame);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Listxml.Mame? newMame = serializer.Deserialize(metadata);
|
||||
Data.Models.Listxml.Mame? newMame = serializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMame);
|
||||
@@ -35,17 +36,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripMachineTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.Listxml();
|
||||
var serializer = new Listxml();
|
||||
|
||||
// Build the data
|
||||
Models.Listxml.Mame mame = Build(game: false);
|
||||
Data.Models.Listxml.Mame mame = Build(game: false);
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(mame);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(mame);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Listxml.Mame? newMame = serializer.Deserialize(metadata);
|
||||
Data.Models.Listxml.Mame? newMame = serializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMame);
|
||||
@@ -61,16 +62,16 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.Listxml.Mame Build(bool game)
|
||||
private static Data.Models.Listxml.Mame Build(bool game)
|
||||
{
|
||||
var biosset = new Models.Listxml.BiosSet
|
||||
var biosset = new Data.Models.Listxml.BiosSet
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Description = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var rom = new Models.Listxml.Rom
|
||||
var rom = new Data.Models.Listxml.Rom
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Bios = "XXXXXX",
|
||||
@@ -86,7 +87,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
SoundOnly = "XXXXXX",
|
||||
};
|
||||
|
||||
var disk = new Models.Listxml.Disk
|
||||
var disk = new Data.Models.Listxml.Disk
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
@@ -99,17 +100,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Optional = "XXXXXX",
|
||||
};
|
||||
|
||||
var deviceref = new Models.Listxml.DeviceRef
|
||||
var deviceref = new Data.Models.Listxml.DeviceRef
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var sample = new Models.Listxml.Sample
|
||||
var sample = new Data.Models.Listxml.Sample
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var chip = new Models.Listxml.Chip
|
||||
var chip = new Data.Models.Listxml.Chip
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
@@ -118,7 +119,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Clock = "XXXXXX",
|
||||
};
|
||||
|
||||
var display = new Models.Listxml.Display
|
||||
var display = new Data.Models.Listxml.Display
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Type = "XXXXXX",
|
||||
@@ -136,7 +137,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
VBStart = "XXXXXX",
|
||||
};
|
||||
|
||||
var video = new Models.Listxml.Video
|
||||
var video = new Data.Models.Listxml.Video
|
||||
{
|
||||
Screen = "XXXXXX",
|
||||
Orientation = "XXXXXX",
|
||||
@@ -147,12 +148,12 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Refresh = "XXXXXX",
|
||||
};
|
||||
|
||||
var sound = new Models.Listxml.Sound
|
||||
var sound = new Data.Models.Listxml.Sound
|
||||
{
|
||||
Channels = "XXXXXX",
|
||||
};
|
||||
|
||||
var control = new Models.Listxml.Control
|
||||
var control = new Data.Models.Listxml.Control
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Player = "XXXXXX",
|
||||
@@ -168,7 +169,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Ways3 = "XXXXXX",
|
||||
};
|
||||
|
||||
var input = new Models.Listxml.Input
|
||||
var input = new Data.Models.Listxml.Input
|
||||
{
|
||||
Service = "XXXXXX",
|
||||
Tilt = "XXXXXX",
|
||||
@@ -179,7 +180,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Control = [control],
|
||||
};
|
||||
|
||||
var condition = new Models.Listxml.Condition
|
||||
var condition = new Data.Models.Listxml.Condition
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Mask = "XXXXXX",
|
||||
@@ -187,14 +188,14 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Value = "XXXXXX",
|
||||
};
|
||||
|
||||
var diplocation = new Models.Listxml.DipLocation
|
||||
var diplocation = new Data.Models.Listxml.DipLocation
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Number = "XXXXXX",
|
||||
Inverted = "XXXXXX",
|
||||
};
|
||||
|
||||
var dipvalue = new Models.Listxml.DipValue
|
||||
var dipvalue = new Data.Models.Listxml.DipValue
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
@@ -202,7 +203,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Condition = condition,
|
||||
};
|
||||
|
||||
var dipswitch = new Models.Listxml.DipSwitch
|
||||
var dipswitch = new Data.Models.Listxml.DipSwitch
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
@@ -212,14 +213,14 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
DipValue = [dipvalue],
|
||||
};
|
||||
|
||||
var conflocation = new Models.Listxml.ConfLocation
|
||||
var conflocation = new Data.Models.Listxml.ConfLocation
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Number = "XXXXXX",
|
||||
Inverted = "XXXXXX",
|
||||
};
|
||||
|
||||
var confsetting = new Models.Listxml.ConfSetting
|
||||
var confsetting = new Data.Models.Listxml.ConfSetting
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
@@ -227,7 +228,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Condition = condition,
|
||||
};
|
||||
|
||||
var configuration = new Models.Listxml.Configuration
|
||||
var configuration = new Data.Models.Listxml.Configuration
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
@@ -237,25 +238,25 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
ConfSetting = [confsetting],
|
||||
};
|
||||
|
||||
var analog = new Models.Listxml.Analog
|
||||
var analog = new Data.Models.Listxml.Analog
|
||||
{
|
||||
Mask = "XXXXXX",
|
||||
};
|
||||
|
||||
var port = new Models.Listxml.Port
|
||||
var port = new Data.Models.Listxml.Port
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Analog = [analog],
|
||||
};
|
||||
|
||||
var adjuster = new Models.Listxml.Adjuster
|
||||
var adjuster = new Data.Models.Listxml.Adjuster
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
Condition = condition,
|
||||
};
|
||||
|
||||
var driver = new Models.Listxml.Driver
|
||||
var driver = new Data.Models.Listxml.Driver
|
||||
{
|
||||
Status = "XXXXXX",
|
||||
Color = "XXXXXX",
|
||||
@@ -270,25 +271,25 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Incomplete = "XXXXXX",
|
||||
};
|
||||
|
||||
var feature = new Models.Listxml.Feature
|
||||
var feature = new Data.Models.Listxml.Feature
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Status = "XXXXXX",
|
||||
Overall = "XXXXXX",
|
||||
};
|
||||
|
||||
var instance = new Models.Listxml.Instance
|
||||
var instance = new Data.Models.Listxml.Instance
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
BriefName = "XXXXXX",
|
||||
};
|
||||
|
||||
var extension = new Models.Listxml.Extension
|
||||
var extension = new Data.Models.Listxml.Extension
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var device = new Models.Listxml.Device
|
||||
var device = new Data.Models.Listxml.Device
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
@@ -299,20 +300,20 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Extension = [extension],
|
||||
};
|
||||
|
||||
var slotOption = new Models.Listxml.SlotOption
|
||||
var slotOption = new Data.Models.Listxml.SlotOption
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
DevName = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var slot = new Models.Listxml.Slot
|
||||
var slot = new Data.Models.Listxml.Slot
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
SlotOption = [slotOption],
|
||||
};
|
||||
|
||||
var softwarelist = new Models.Listxml.SoftwareList
|
||||
var softwarelist = new Data.Models.Listxml.SoftwareList
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Name = "XXXXXX",
|
||||
@@ -320,16 +321,16 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Filter = "XXXXXX",
|
||||
};
|
||||
|
||||
var ramoption = new Models.Listxml.RamOption
|
||||
var ramoption = new Data.Models.Listxml.RamOption
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
Content = "XXXXXX",
|
||||
};
|
||||
|
||||
Models.Listxml.GameBase gameBase = game
|
||||
? new Models.Listxml.Game()
|
||||
: new Models.Listxml.Machine();
|
||||
Data.Models.Listxml.GameBase gameBase = game
|
||||
? new Data.Models.Listxml.Game()
|
||||
: new Data.Models.Listxml.Machine();
|
||||
gameBase.Name = "XXXXXX";
|
||||
gameBase.SourceFile = "XXXXXX";
|
||||
gameBase.IsBios = "XXXXXX";
|
||||
@@ -364,7 +365,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
gameBase.SoftwareList = [softwarelist];
|
||||
gameBase.RamOption = [ramoption];
|
||||
|
||||
return new Models.Listxml.Mame
|
||||
return new Data.Models.Listxml.Mame
|
||||
{
|
||||
Build = "XXXXXX",
|
||||
Debug = "XXXXXX",
|
||||
@@ -376,7 +377,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a GameBase
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.GameBase? gb)
|
||||
private static void Validate(Data.Models.Listxml.GameBase? gb)
|
||||
{
|
||||
Assert.NotNull(gb);
|
||||
Assert.Equal("XXXXXX", gb.Name);
|
||||
@@ -470,7 +471,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a BiosSet
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.BiosSet? biosset)
|
||||
private static void Validate(Data.Models.Listxml.BiosSet? biosset)
|
||||
{
|
||||
Assert.NotNull(biosset);
|
||||
Assert.Equal("XXXXXX", biosset.Name);
|
||||
@@ -481,7 +482,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Rom
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Rom? rom)
|
||||
private static void Validate(Data.Models.Listxml.Rom? rom)
|
||||
{
|
||||
Assert.NotNull(rom);
|
||||
Assert.Equal("XXXXXX", rom.Name);
|
||||
@@ -501,7 +502,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Disk
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Disk? disk)
|
||||
private static void Validate(Data.Models.Listxml.Disk? disk)
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("XXXXXX", disk.Name);
|
||||
@@ -518,7 +519,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a DeviceRef
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.DeviceRef? deviceref)
|
||||
private static void Validate(Data.Models.Listxml.DeviceRef? deviceref)
|
||||
{
|
||||
Assert.NotNull(deviceref);
|
||||
Assert.Equal("XXXXXX", deviceref.Name);
|
||||
@@ -527,7 +528,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Sample
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Sample? sample)
|
||||
private static void Validate(Data.Models.Listxml.Sample? sample)
|
||||
{
|
||||
Assert.NotNull(sample);
|
||||
Assert.Equal("XXXXXX", sample.Name);
|
||||
@@ -536,7 +537,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Chip
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Chip? chip)
|
||||
private static void Validate(Data.Models.Listxml.Chip? chip)
|
||||
{
|
||||
Assert.NotNull(chip);
|
||||
Assert.Equal("XXXXXX", chip.Name);
|
||||
@@ -549,7 +550,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Display
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Display? display)
|
||||
private static void Validate(Data.Models.Listxml.Display? display)
|
||||
{
|
||||
Assert.NotNull(display);
|
||||
Assert.Equal("XXXXXX", display.Tag);
|
||||
@@ -571,7 +572,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Video
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Video? video)
|
||||
private static void Validate(Data.Models.Listxml.Video? video)
|
||||
{
|
||||
Assert.NotNull(video);
|
||||
Assert.Equal("XXXXXX", video.Screen);
|
||||
@@ -586,7 +587,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Sound
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Sound? sound)
|
||||
private static void Validate(Data.Models.Listxml.Sound? sound)
|
||||
{
|
||||
Assert.NotNull(sound);
|
||||
Assert.Equal("XXXXXX", sound.Channels);
|
||||
@@ -595,7 +596,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Input
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Input? input)
|
||||
private static void Validate(Data.Models.Listxml.Input? input)
|
||||
{
|
||||
Assert.NotNull(input);
|
||||
Assert.Equal("XXXXXX", input.Service);
|
||||
@@ -613,7 +614,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Control
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Control? control)
|
||||
private static void Validate(Data.Models.Listxml.Control? control)
|
||||
{
|
||||
Assert.NotNull(control);
|
||||
Assert.Equal("XXXXXX", control.Type);
|
||||
@@ -633,7 +634,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a DipSwitch
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.DipSwitch? dipswitch)
|
||||
private static void Validate(Data.Models.Listxml.DipSwitch? dipswitch)
|
||||
{
|
||||
Assert.NotNull(dipswitch);
|
||||
Assert.Equal("XXXXXX", dipswitch.Name);
|
||||
@@ -653,7 +654,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Condition
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Condition? condition)
|
||||
private static void Validate(Data.Models.Listxml.Condition? condition)
|
||||
{
|
||||
Assert.NotNull(condition);
|
||||
Assert.Equal("XXXXXX", condition.Tag);
|
||||
@@ -665,7 +666,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a DipLocation
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.DipLocation? diplocation)
|
||||
private static void Validate(Data.Models.Listxml.DipLocation? diplocation)
|
||||
{
|
||||
Assert.NotNull(diplocation);
|
||||
Assert.Equal("XXXXXX", diplocation.Name);
|
||||
@@ -676,7 +677,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a DipValue
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.DipValue? dipvalue)
|
||||
private static void Validate(Data.Models.Listxml.DipValue? dipvalue)
|
||||
{
|
||||
Assert.NotNull(dipvalue);
|
||||
Assert.Equal("XXXXXX", dipvalue.Name);
|
||||
@@ -688,7 +689,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Configuration
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Configuration? configuration)
|
||||
private static void Validate(Data.Models.Listxml.Configuration? configuration)
|
||||
{
|
||||
Assert.NotNull(configuration);
|
||||
Assert.Equal("XXXXXX", configuration.Name);
|
||||
@@ -708,7 +709,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a ConfLocation
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.ConfLocation? conflocation)
|
||||
private static void Validate(Data.Models.Listxml.ConfLocation? conflocation)
|
||||
{
|
||||
Assert.NotNull(conflocation);
|
||||
Assert.Equal("XXXXXX", conflocation.Name);
|
||||
@@ -719,7 +720,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a ConfSetting
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.ConfSetting? confsetting)
|
||||
private static void Validate(Data.Models.Listxml.ConfSetting? confsetting)
|
||||
{
|
||||
Assert.NotNull(confsetting);
|
||||
Assert.Equal("XXXXXX", confsetting.Name);
|
||||
@@ -731,7 +732,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Port
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Port? port)
|
||||
private static void Validate(Data.Models.Listxml.Port? port)
|
||||
{
|
||||
Assert.NotNull(port);
|
||||
Assert.Equal("XXXXXX", port.Tag);
|
||||
@@ -744,7 +745,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Analog
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Analog? analog)
|
||||
private static void Validate(Data.Models.Listxml.Analog? analog)
|
||||
{
|
||||
Assert.NotNull(analog);
|
||||
Assert.Equal("XXXXXX", analog.Mask);
|
||||
@@ -753,7 +754,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Adjuster
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Adjuster? adjuster)
|
||||
private static void Validate(Data.Models.Listxml.Adjuster? adjuster)
|
||||
{
|
||||
Assert.NotNull(adjuster);
|
||||
Assert.Equal("XXXXXX", adjuster.Name);
|
||||
@@ -764,7 +765,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Driver
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Driver? driver)
|
||||
private static void Validate(Data.Models.Listxml.Driver? driver)
|
||||
{
|
||||
Assert.NotNull(driver);
|
||||
Assert.Equal("XXXXXX", driver.Status);
|
||||
@@ -783,7 +784,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Feature
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Feature? feature)
|
||||
private static void Validate(Data.Models.Listxml.Feature? feature)
|
||||
{
|
||||
Assert.NotNull(feature);
|
||||
Assert.Equal("XXXXXX", feature.Type);
|
||||
@@ -794,7 +795,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Device
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Device? device)
|
||||
private static void Validate(Data.Models.Listxml.Device? device)
|
||||
{
|
||||
Assert.NotNull(device);
|
||||
Assert.Equal("XXXXXX", device.Type);
|
||||
@@ -812,7 +813,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Instance
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Instance? instance)
|
||||
private static void Validate(Data.Models.Listxml.Instance? instance)
|
||||
{
|
||||
Assert.NotNull(instance);
|
||||
Assert.Equal("XXXXXX", instance.Name);
|
||||
@@ -822,7 +823,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Extension
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Extension? extension)
|
||||
private static void Validate(Data.Models.Listxml.Extension? extension)
|
||||
{
|
||||
Assert.NotNull(extension);
|
||||
Assert.Equal("XXXXXX", extension.Name);
|
||||
@@ -831,7 +832,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Slot
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Slot? slot)
|
||||
private static void Validate(Data.Models.Listxml.Slot? slot)
|
||||
{
|
||||
Assert.NotNull(slot);
|
||||
Assert.Equal("XXXXXX", slot.Name);
|
||||
@@ -844,7 +845,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a SlotOption
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.SlotOption? slotoption)
|
||||
private static void Validate(Data.Models.Listxml.SlotOption? slotoption)
|
||||
{
|
||||
Assert.NotNull(slotoption);
|
||||
Assert.Equal("XXXXXX", slotoption.Name);
|
||||
@@ -855,7 +856,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a SoftwareList
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.SoftwareList? softwarelist)
|
||||
private static void Validate(Data.Models.Listxml.SoftwareList? softwarelist)
|
||||
{
|
||||
Assert.NotNull(softwarelist);
|
||||
Assert.Equal("XXXXXX", softwarelist.Tag);
|
||||
@@ -867,7 +868,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a RamOption
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.RamOption? ramoption)
|
||||
private static void Validate(Data.Models.Listxml.RamOption? ramoption)
|
||||
{
|
||||
Assert.NotNull(ramoption);
|
||||
Assert.Equal("XXXXXX", ramoption.Name);
|
||||
@@ -875,4 +876,4 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Assert.Equal("XXXXXX", ramoption.Content);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using SabreTools.Serialization.CrossModel;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.CrossModel
|
||||
@@ -8,17 +9,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripGameTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.Logiqx();
|
||||
var serializer = new Logiqx();
|
||||
|
||||
// Build the data
|
||||
Models.Logiqx.Datafile df = Build(game: true);
|
||||
Data.Models.Logiqx.Datafile df = Build(game: true);
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(df);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(df);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Logiqx.Datafile? newDf = serializer.Deserialize(metadata, game: true);
|
||||
Data.Models.Logiqx.Datafile? newDf = serializer.Deserialize(metadata, game: true);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newDf);
|
||||
@@ -28,10 +29,11 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Validate(newDf.Header);
|
||||
|
||||
Assert.NotNull(newDf.Game);
|
||||
var newGame = Assert.Single(newDf.Game);
|
||||
Validate(newGame);
|
||||
Assert.Equal(2, newDf.Game.Length);
|
||||
Validate(newDf.Game[0], nested: false);
|
||||
Validate(newDf.Game[1], nested: true);
|
||||
|
||||
// TODO: Unsupported
|
||||
// TODO: Unsupported for round-trip
|
||||
Assert.Null(newDf.Dir);
|
||||
}
|
||||
|
||||
@@ -39,17 +41,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripMachineTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.Logiqx();
|
||||
var serializer = new Logiqx();
|
||||
|
||||
// Build the data
|
||||
Models.Logiqx.Datafile df = Build(game: false);
|
||||
Data.Models.Logiqx.Datafile df = Build(game: false);
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(df);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(df);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Logiqx.Datafile? newDf = serializer.Deserialize(metadata, game: false);
|
||||
Data.Models.Logiqx.Datafile? newDf = serializer.Deserialize(metadata, game: false);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newDf);
|
||||
@@ -59,19 +61,20 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Validate(newDf.Header);
|
||||
|
||||
Assert.NotNull(newDf.Game);
|
||||
var newGame = Assert.Single(newDf.Game);
|
||||
Validate(newGame);
|
||||
Assert.Equal(2, newDf.Game.Length);
|
||||
Validate(newDf.Game[0], nested: false);
|
||||
Validate(newDf.Game[1], nested: true);
|
||||
|
||||
// TODO: Unsupported
|
||||
// TODO: Unsupported for round-trip
|
||||
Assert.Null(newDf.Dir);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.Logiqx.Datafile Build(bool game)
|
||||
private static Data.Models.Logiqx.Datafile Build(bool game)
|
||||
{
|
||||
var clrmamepro = new Models.Logiqx.ClrMamePro
|
||||
var clrmamepro = new Data.Models.Logiqx.ClrMamePro
|
||||
{
|
||||
Header = "XXXXXX",
|
||||
ForceMerging = "XXXXXX",
|
||||
@@ -79,7 +82,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
ForcePacking = "XXXXXX",
|
||||
};
|
||||
|
||||
var romcenter = new Models.Logiqx.RomCenter
|
||||
var romcenter = new Data.Models.Logiqx.RomCenter
|
||||
{
|
||||
Plugin = "XXXXXX",
|
||||
RomMode = "XXXXXX",
|
||||
@@ -90,7 +93,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
LockSampleMode = "XXXXXX",
|
||||
};
|
||||
|
||||
var header = new Models.Logiqx.Header
|
||||
var header = new Data.Models.Logiqx.Header
|
||||
{
|
||||
Id = "XXXXXX",
|
||||
Name = "XXXXXX",
|
||||
@@ -109,7 +112,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
RomCenter = romcenter,
|
||||
};
|
||||
|
||||
var trurip = new Models.Logiqx.Trurip
|
||||
var trurip = new Data.Models.Logiqx.Trurip
|
||||
{
|
||||
TitleID = "XXXXXX",
|
||||
Publisher = "XXXXXX",
|
||||
@@ -127,7 +130,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
RelatedTo = "XXXXXX",
|
||||
};
|
||||
|
||||
var release = new Models.Logiqx.Release
|
||||
var release = new Data.Models.Logiqx.Release
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Region = "XXXXXX",
|
||||
@@ -136,19 +139,25 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var biosset = new Models.Logiqx.BiosSet
|
||||
var biosset = new Data.Models.Logiqx.BiosSet
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Description = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var rom = new Models.Logiqx.Rom
|
||||
var rom = new Data.Models.Logiqx.Rom
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Size = "XXXXXX",
|
||||
CRC16 = "XXXXXX",
|
||||
CRC = "XXXXXX",
|
||||
CRC64 = "XXXXXX",
|
||||
MD2 = "XXXXXX",
|
||||
MD4 = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
RIPEMD128 = "XXXXXX",
|
||||
RIPEMD160 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
SHA256 = "XXXXXX",
|
||||
SHA384 = "XXXXXX",
|
||||
@@ -165,7 +174,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
MIA = "XXXXXX",
|
||||
};
|
||||
|
||||
var disk = new Models.Logiqx.Disk
|
||||
var disk = new Data.Models.Logiqx.Disk
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
@@ -175,7 +184,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Region = "XXXXXX",
|
||||
};
|
||||
|
||||
var media = new Models.Logiqx.Media
|
||||
var media = new Data.Models.Logiqx.Media
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
@@ -184,22 +193,22 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
SpamSum = "XXXXXX",
|
||||
};
|
||||
|
||||
var deviceRef = new Models.Logiqx.DeviceRef
|
||||
var deviceRef = new Data.Models.Logiqx.DeviceRef
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var sample = new Models.Logiqx.Sample
|
||||
var sample = new Data.Models.Logiqx.Sample
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var archive = new Models.Logiqx.Archive
|
||||
var archive = new Data.Models.Logiqx.Archive
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var driver = new Models.Logiqx.Driver
|
||||
var driver = new Data.Models.Logiqx.Driver
|
||||
{
|
||||
Status = "XXXXXX",
|
||||
Emulation = "XXXXXX",
|
||||
@@ -211,7 +220,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Incomplete = "XXXXXX",
|
||||
};
|
||||
|
||||
var softwarelist = new Models.Logiqx.SoftwareList
|
||||
var softwarelist = new Data.Models.Logiqx.SoftwareList
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Name = "XXXXXX",
|
||||
@@ -219,9 +228,9 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Filter = "XXXXXX",
|
||||
};
|
||||
|
||||
Models.Logiqx.GameBase gameBase = game
|
||||
? new Models.Logiqx.Game()
|
||||
: new Models.Logiqx.Machine();
|
||||
Data.Models.Logiqx.GameBase gameBase = game
|
||||
? new Data.Models.Logiqx.Game()
|
||||
: new Data.Models.Logiqx.Machine();
|
||||
gameBase.Name = "XXXXXX";
|
||||
gameBase.SourceFile = "XXXXXX";
|
||||
gameBase.IsBios = "XXXXXX";
|
||||
@@ -253,21 +262,33 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
gameBase.Driver = driver;
|
||||
gameBase.SoftwareList = [softwarelist];
|
||||
|
||||
return new Models.Logiqx.Datafile
|
||||
var subdir = new Data.Models.Logiqx.Dir
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Game = [gameBase],
|
||||
};
|
||||
|
||||
var dir = new Data.Models.Logiqx.Dir
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Subdir = [subdir],
|
||||
};
|
||||
|
||||
return new Data.Models.Logiqx.Datafile
|
||||
{
|
||||
Build = "XXXXXX",
|
||||
Debug = "XXXXXX",
|
||||
SchemaLocation = "XXXXXX",
|
||||
Header = header,
|
||||
Game = [gameBase],
|
||||
// Dir = [dir], // TODO: Unsupported
|
||||
Dir = [dir],
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Header
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.Header? header)
|
||||
private static void Validate(Data.Models.Logiqx.Header? header)
|
||||
{
|
||||
Assert.NotNull(header);
|
||||
Assert.Equal("XXXXXX", header.Id);
|
||||
@@ -290,7 +311,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a ClrMamePro
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.ClrMamePro? cmp)
|
||||
private static void Validate(Data.Models.Logiqx.ClrMamePro? cmp)
|
||||
{
|
||||
Assert.NotNull(cmp);
|
||||
Assert.Equal("XXXXXX", cmp.Header);
|
||||
@@ -302,7 +323,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a RomCenter
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.RomCenter? rc)
|
||||
private static void Validate(Data.Models.Logiqx.RomCenter? rc)
|
||||
{
|
||||
Assert.NotNull(rc);
|
||||
Assert.Equal("XXXXXX", rc.Plugin);
|
||||
@@ -317,10 +338,13 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a GameBase
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.GameBase? gb)
|
||||
private static void Validate(Data.Models.Logiqx.GameBase? gb, bool nested)
|
||||
{
|
||||
Assert.NotNull(gb);
|
||||
Assert.Equal("XXXXXX", gb.Name);
|
||||
if (nested)
|
||||
Assert.Equal("XXXXXX\\XXXXXX\\XXXXXX", gb.Name);
|
||||
else
|
||||
Assert.Equal("XXXXXX", gb.Name);
|
||||
Assert.Equal("XXXXXX", gb.SourceFile);
|
||||
Assert.Equal("XXXXXX", gb.IsBios);
|
||||
Assert.Equal("XXXXXX", gb.IsDevice);
|
||||
@@ -391,7 +415,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Trurip
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.Trurip? trurip)
|
||||
private static void Validate(Data.Models.Logiqx.Trurip? trurip)
|
||||
{
|
||||
Assert.NotNull(trurip);
|
||||
Assert.Equal("XXXXXX", trurip.TitleID);
|
||||
@@ -413,7 +437,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Release
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.Release? release)
|
||||
private static void Validate(Data.Models.Logiqx.Release? release)
|
||||
{
|
||||
Assert.NotNull(release);
|
||||
Assert.Equal("XXXXXX", release.Name);
|
||||
@@ -426,7 +450,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a BiosSet
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.BiosSet? biosset)
|
||||
private static void Validate(Data.Models.Logiqx.BiosSet? biosset)
|
||||
{
|
||||
Assert.NotNull(biosset);
|
||||
Assert.Equal("XXXXXX", biosset.Name);
|
||||
@@ -437,13 +461,19 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Rom
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.Rom? rom)
|
||||
private static void Validate(Data.Models.Logiqx.Rom? rom)
|
||||
{
|
||||
Assert.NotNull(rom);
|
||||
Assert.Equal("XXXXXX", rom.Name);
|
||||
Assert.Equal("XXXXXX", rom.Size);
|
||||
Assert.Equal("XXXXXX", rom.CRC16);
|
||||
Assert.Equal("XXXXXX", rom.CRC);
|
||||
Assert.Equal("XXXXXX", rom.CRC64);
|
||||
Assert.Equal("XXXXXX", rom.MD2);
|
||||
Assert.Equal("XXXXXX", rom.MD4);
|
||||
Assert.Equal("XXXXXX", rom.MD5);
|
||||
Assert.Equal("XXXXXX", rom.RIPEMD128);
|
||||
Assert.Equal("XXXXXX", rom.RIPEMD160);
|
||||
Assert.Equal("XXXXXX", rom.SHA1);
|
||||
Assert.Equal("XXXXXX", rom.SHA256);
|
||||
Assert.Equal("XXXXXX", rom.SHA384);
|
||||
@@ -463,7 +493,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Disk
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.Disk? disk)
|
||||
private static void Validate(Data.Models.Logiqx.Disk? disk)
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("XXXXXX", disk.Name);
|
||||
@@ -477,7 +507,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Media
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.Media? media)
|
||||
private static void Validate(Data.Models.Logiqx.Media? media)
|
||||
{
|
||||
Assert.NotNull(media);
|
||||
Assert.Equal("XXXXXX", media.Name);
|
||||
@@ -490,7 +520,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a DeviceRef
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.DeviceRef? deviceref)
|
||||
private static void Validate(Data.Models.Logiqx.DeviceRef? deviceref)
|
||||
{
|
||||
Assert.NotNull(deviceref);
|
||||
Assert.Equal("XXXXXX", deviceref.Name);
|
||||
@@ -499,7 +529,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Sample
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.Sample? sample)
|
||||
private static void Validate(Data.Models.Logiqx.Sample? sample)
|
||||
{
|
||||
Assert.NotNull(sample);
|
||||
Assert.Equal("XXXXXX", sample.Name);
|
||||
@@ -508,7 +538,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Archive
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.Archive? archive)
|
||||
private static void Validate(Data.Models.Logiqx.Archive? archive)
|
||||
{
|
||||
Assert.NotNull(archive);
|
||||
Assert.Equal("XXXXXX", archive.Name);
|
||||
@@ -517,7 +547,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Driver
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.Driver? driver)
|
||||
private static void Validate(Data.Models.Logiqx.Driver? driver)
|
||||
{
|
||||
Assert.NotNull(driver);
|
||||
Assert.Equal("XXXXXX", driver.Status);
|
||||
@@ -533,7 +563,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a SoftwareList
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.SoftwareList? softwarelist)
|
||||
private static void Validate(Data.Models.Logiqx.SoftwareList? softwarelist)
|
||||
{
|
||||
Assert.NotNull(softwarelist);
|
||||
Assert.Equal("XXXXXX", softwarelist.Tag);
|
||||
@@ -542,4 +572,4 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Assert.Equal("XXXXXX", softwarelist.Filter);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using SabreTools.Serialization.CrossModel;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.CrossModel
|
||||
@@ -8,17 +9,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripGameTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.M1();
|
||||
var serializer = new M1();
|
||||
|
||||
// Build the data
|
||||
Models.Listxml.M1 m1 = Build(game: true);
|
||||
Data.Models.Listxml.M1 m1 = Build(game: true);
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(m1);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(m1);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Listxml.M1? newM1 = serializer.Deserialize(metadata);
|
||||
Data.Models.Listxml.M1? newM1 = serializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newM1);
|
||||
@@ -33,17 +34,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripMachineTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.M1();
|
||||
var serializer = new M1();
|
||||
|
||||
// Build the data
|
||||
Models.Listxml.M1 m1 = Build(game: false);
|
||||
Data.Models.Listxml.M1 m1 = Build(game: false);
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(m1);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(m1);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Listxml.M1? newM1 = serializer.Deserialize(metadata);
|
||||
Data.Models.Listxml.M1? newM1 = serializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newM1);
|
||||
@@ -57,16 +58,16 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.Listxml.M1 Build(bool game)
|
||||
private static Data.Models.Listxml.M1 Build(bool game)
|
||||
{
|
||||
var biosset = new Models.Listxml.BiosSet
|
||||
var biosset = new Data.Models.Listxml.BiosSet
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Description = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var rom = new Models.Listxml.Rom
|
||||
var rom = new Data.Models.Listxml.Rom
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Bios = "XXXXXX",
|
||||
@@ -82,7 +83,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
SoundOnly = "XXXXXX",
|
||||
};
|
||||
|
||||
var disk = new Models.Listxml.Disk
|
||||
var disk = new Data.Models.Listxml.Disk
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
@@ -95,17 +96,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Optional = "XXXXXX",
|
||||
};
|
||||
|
||||
var deviceref = new Models.Listxml.DeviceRef
|
||||
var deviceref = new Data.Models.Listxml.DeviceRef
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var sample = new Models.Listxml.Sample
|
||||
var sample = new Data.Models.Listxml.Sample
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var chip = new Models.Listxml.Chip
|
||||
var chip = new Data.Models.Listxml.Chip
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
@@ -114,7 +115,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Clock = "XXXXXX",
|
||||
};
|
||||
|
||||
var display = new Models.Listxml.Display
|
||||
var display = new Data.Models.Listxml.Display
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Type = "XXXXXX",
|
||||
@@ -132,7 +133,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
VBStart = "XXXXXX",
|
||||
};
|
||||
|
||||
var video = new Models.Listxml.Video
|
||||
var video = new Data.Models.Listxml.Video
|
||||
{
|
||||
Screen = "XXXXXX",
|
||||
Orientation = "XXXXXX",
|
||||
@@ -143,12 +144,12 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Refresh = "XXXXXX",
|
||||
};
|
||||
|
||||
var sound = new Models.Listxml.Sound
|
||||
var sound = new Data.Models.Listxml.Sound
|
||||
{
|
||||
Channels = "XXXXXX",
|
||||
};
|
||||
|
||||
var control = new Models.Listxml.Control
|
||||
var control = new Data.Models.Listxml.Control
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Player = "XXXXXX",
|
||||
@@ -164,7 +165,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Ways3 = "XXXXXX",
|
||||
};
|
||||
|
||||
var input = new Models.Listxml.Input
|
||||
var input = new Data.Models.Listxml.Input
|
||||
{
|
||||
Service = "XXXXXX",
|
||||
Tilt = "XXXXXX",
|
||||
@@ -175,7 +176,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Control = [control],
|
||||
};
|
||||
|
||||
var condition = new Models.Listxml.Condition
|
||||
var condition = new Data.Models.Listxml.Condition
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Mask = "XXXXXX",
|
||||
@@ -183,14 +184,14 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Value = "XXXXXX",
|
||||
};
|
||||
|
||||
var diplocation = new Models.Listxml.DipLocation
|
||||
var diplocation = new Data.Models.Listxml.DipLocation
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Number = "XXXXXX",
|
||||
Inverted = "XXXXXX",
|
||||
};
|
||||
|
||||
var dipvalue = new Models.Listxml.DipValue
|
||||
var dipvalue = new Data.Models.Listxml.DipValue
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
@@ -198,7 +199,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Condition = condition,
|
||||
};
|
||||
|
||||
var dipswitch = new Models.Listxml.DipSwitch
|
||||
var dipswitch = new Data.Models.Listxml.DipSwitch
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
@@ -208,14 +209,14 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
DipValue = [dipvalue],
|
||||
};
|
||||
|
||||
var conflocation = new Models.Listxml.ConfLocation
|
||||
var conflocation = new Data.Models.Listxml.ConfLocation
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Number = "XXXXXX",
|
||||
Inverted = "XXXXXX",
|
||||
};
|
||||
|
||||
var confsetting = new Models.Listxml.ConfSetting
|
||||
var confsetting = new Data.Models.Listxml.ConfSetting
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
@@ -223,7 +224,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Condition = condition,
|
||||
};
|
||||
|
||||
var configuration = new Models.Listxml.Configuration
|
||||
var configuration = new Data.Models.Listxml.Configuration
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
@@ -233,25 +234,25 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
ConfSetting = [confsetting],
|
||||
};
|
||||
|
||||
var analog = new Models.Listxml.Analog
|
||||
var analog = new Data.Models.Listxml.Analog
|
||||
{
|
||||
Mask = "XXXXXX",
|
||||
};
|
||||
|
||||
var port = new Models.Listxml.Port
|
||||
var port = new Data.Models.Listxml.Port
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Analog = [analog],
|
||||
};
|
||||
|
||||
var adjuster = new Models.Listxml.Adjuster
|
||||
var adjuster = new Data.Models.Listxml.Adjuster
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
Condition = condition,
|
||||
};
|
||||
|
||||
var driver = new Models.Listxml.Driver
|
||||
var driver = new Data.Models.Listxml.Driver
|
||||
{
|
||||
Status = "XXXXXX",
|
||||
Color = "XXXXXX",
|
||||
@@ -266,25 +267,25 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Incomplete = "XXXXXX",
|
||||
};
|
||||
|
||||
var feature = new Models.Listxml.Feature
|
||||
var feature = new Data.Models.Listxml.Feature
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Status = "XXXXXX",
|
||||
Overall = "XXXXXX",
|
||||
};
|
||||
|
||||
var instance = new Models.Listxml.Instance
|
||||
var instance = new Data.Models.Listxml.Instance
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
BriefName = "XXXXXX",
|
||||
};
|
||||
|
||||
var extension = new Models.Listxml.Extension
|
||||
var extension = new Data.Models.Listxml.Extension
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var device = new Models.Listxml.Device
|
||||
var device = new Data.Models.Listxml.Device
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
@@ -295,20 +296,20 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Extension = [extension],
|
||||
};
|
||||
|
||||
var slotOption = new Models.Listxml.SlotOption
|
||||
var slotOption = new Data.Models.Listxml.SlotOption
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
DevName = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var slot = new Models.Listxml.Slot
|
||||
var slot = new Data.Models.Listxml.Slot
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
SlotOption = [slotOption],
|
||||
};
|
||||
|
||||
var softwarelist = new Models.Listxml.SoftwareList
|
||||
var softwarelist = new Data.Models.Listxml.SoftwareList
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Name = "XXXXXX",
|
||||
@@ -316,16 +317,16 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Filter = "XXXXXX",
|
||||
};
|
||||
|
||||
var ramoption = new Models.Listxml.RamOption
|
||||
var ramoption = new Data.Models.Listxml.RamOption
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
Content = "XXXXXX",
|
||||
};
|
||||
|
||||
Models.Listxml.GameBase gameBase = game
|
||||
? new Models.Listxml.Game()
|
||||
: new Models.Listxml.Machine();
|
||||
Data.Models.Listxml.GameBase gameBase = game
|
||||
? new Data.Models.Listxml.Game()
|
||||
: new Data.Models.Listxml.Machine();
|
||||
gameBase.Name = "XXXXXX";
|
||||
gameBase.SourceFile = "XXXXXX";
|
||||
gameBase.IsBios = "XXXXXX";
|
||||
@@ -360,7 +361,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
gameBase.SoftwareList = [softwarelist];
|
||||
gameBase.RamOption = [ramoption];
|
||||
|
||||
return new Models.Listxml.M1
|
||||
return new Data.Models.Listxml.M1
|
||||
{
|
||||
Version = "XXXXXX",
|
||||
Game = [gameBase],
|
||||
@@ -370,7 +371,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a GameBase
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.GameBase? gb)
|
||||
private static void Validate(Data.Models.Listxml.GameBase? gb)
|
||||
{
|
||||
Assert.NotNull(gb);
|
||||
Assert.Equal("XXXXXX", gb.Name);
|
||||
@@ -464,7 +465,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a BiosSet
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.BiosSet? biosset)
|
||||
private static void Validate(Data.Models.Listxml.BiosSet? biosset)
|
||||
{
|
||||
Assert.NotNull(biosset);
|
||||
Assert.Equal("XXXXXX", biosset.Name);
|
||||
@@ -475,7 +476,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Rom
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Rom? rom)
|
||||
private static void Validate(Data.Models.Listxml.Rom? rom)
|
||||
{
|
||||
Assert.NotNull(rom);
|
||||
Assert.Equal("XXXXXX", rom.Name);
|
||||
@@ -495,7 +496,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Disk
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Disk? disk)
|
||||
private static void Validate(Data.Models.Listxml.Disk? disk)
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("XXXXXX", disk.Name);
|
||||
@@ -512,7 +513,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a DeviceRef
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.DeviceRef? deviceref)
|
||||
private static void Validate(Data.Models.Listxml.DeviceRef? deviceref)
|
||||
{
|
||||
Assert.NotNull(deviceref);
|
||||
Assert.Equal("XXXXXX", deviceref.Name);
|
||||
@@ -521,7 +522,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Sample
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Sample? sample)
|
||||
private static void Validate(Data.Models.Listxml.Sample? sample)
|
||||
{
|
||||
Assert.NotNull(sample);
|
||||
Assert.Equal("XXXXXX", sample.Name);
|
||||
@@ -530,7 +531,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Chip
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Chip? chip)
|
||||
private static void Validate(Data.Models.Listxml.Chip? chip)
|
||||
{
|
||||
Assert.NotNull(chip);
|
||||
Assert.Equal("XXXXXX", chip.Name);
|
||||
@@ -543,7 +544,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Display
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Display? display)
|
||||
private static void Validate(Data.Models.Listxml.Display? display)
|
||||
{
|
||||
Assert.NotNull(display);
|
||||
Assert.Equal("XXXXXX", display.Tag);
|
||||
@@ -565,7 +566,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Video
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Video? video)
|
||||
private static void Validate(Data.Models.Listxml.Video? video)
|
||||
{
|
||||
Assert.NotNull(video);
|
||||
Assert.Equal("XXXXXX", video.Screen);
|
||||
@@ -580,7 +581,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Sound
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Sound? sound)
|
||||
private static void Validate(Data.Models.Listxml.Sound? sound)
|
||||
{
|
||||
Assert.NotNull(sound);
|
||||
Assert.Equal("XXXXXX", sound.Channels);
|
||||
@@ -589,7 +590,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Input
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Input? input)
|
||||
private static void Validate(Data.Models.Listxml.Input? input)
|
||||
{
|
||||
Assert.NotNull(input);
|
||||
Assert.Equal("XXXXXX", input.Service);
|
||||
@@ -607,7 +608,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Control
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Control? control)
|
||||
private static void Validate(Data.Models.Listxml.Control? control)
|
||||
{
|
||||
Assert.NotNull(control);
|
||||
Assert.Equal("XXXXXX", control.Type);
|
||||
@@ -627,7 +628,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a DipSwitch
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.DipSwitch? dipswitch)
|
||||
private static void Validate(Data.Models.Listxml.DipSwitch? dipswitch)
|
||||
{
|
||||
Assert.NotNull(dipswitch);
|
||||
Assert.Equal("XXXXXX", dipswitch.Name);
|
||||
@@ -647,7 +648,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Condition
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Condition? condition)
|
||||
private static void Validate(Data.Models.Listxml.Condition? condition)
|
||||
{
|
||||
Assert.NotNull(condition);
|
||||
Assert.Equal("XXXXXX", condition.Tag);
|
||||
@@ -659,7 +660,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a DipLocation
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.DipLocation? diplocation)
|
||||
private static void Validate(Data.Models.Listxml.DipLocation? diplocation)
|
||||
{
|
||||
Assert.NotNull(diplocation);
|
||||
Assert.Equal("XXXXXX", diplocation.Name);
|
||||
@@ -670,7 +671,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a DipValue
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.DipValue? dipvalue)
|
||||
private static void Validate(Data.Models.Listxml.DipValue? dipvalue)
|
||||
{
|
||||
Assert.NotNull(dipvalue);
|
||||
Assert.Equal("XXXXXX", dipvalue.Name);
|
||||
@@ -682,7 +683,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Configuration
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Configuration? configuration)
|
||||
private static void Validate(Data.Models.Listxml.Configuration? configuration)
|
||||
{
|
||||
Assert.NotNull(configuration);
|
||||
Assert.Equal("XXXXXX", configuration.Name);
|
||||
@@ -702,7 +703,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a ConfLocation
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.ConfLocation? conflocation)
|
||||
private static void Validate(Data.Models.Listxml.ConfLocation? conflocation)
|
||||
{
|
||||
Assert.NotNull(conflocation);
|
||||
Assert.Equal("XXXXXX", conflocation.Name);
|
||||
@@ -713,7 +714,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a ConfSetting
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.ConfSetting? confsetting)
|
||||
private static void Validate(Data.Models.Listxml.ConfSetting? confsetting)
|
||||
{
|
||||
Assert.NotNull(confsetting);
|
||||
Assert.Equal("XXXXXX", confsetting.Name);
|
||||
@@ -725,7 +726,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Port
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Port? port)
|
||||
private static void Validate(Data.Models.Listxml.Port? port)
|
||||
{
|
||||
Assert.NotNull(port);
|
||||
Assert.Equal("XXXXXX", port.Tag);
|
||||
@@ -738,7 +739,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Analog
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Analog? analog)
|
||||
private static void Validate(Data.Models.Listxml.Analog? analog)
|
||||
{
|
||||
Assert.NotNull(analog);
|
||||
Assert.Equal("XXXXXX", analog.Mask);
|
||||
@@ -747,7 +748,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Adjuster
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Adjuster? adjuster)
|
||||
private static void Validate(Data.Models.Listxml.Adjuster? adjuster)
|
||||
{
|
||||
Assert.NotNull(adjuster);
|
||||
Assert.Equal("XXXXXX", adjuster.Name);
|
||||
@@ -758,7 +759,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Driver
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Driver? driver)
|
||||
private static void Validate(Data.Models.Listxml.Driver? driver)
|
||||
{
|
||||
Assert.NotNull(driver);
|
||||
Assert.Equal("XXXXXX", driver.Status);
|
||||
@@ -777,7 +778,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Feature
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Feature? feature)
|
||||
private static void Validate(Data.Models.Listxml.Feature? feature)
|
||||
{
|
||||
Assert.NotNull(feature);
|
||||
Assert.Equal("XXXXXX", feature.Type);
|
||||
@@ -788,7 +789,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Device
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Device? device)
|
||||
private static void Validate(Data.Models.Listxml.Device? device)
|
||||
{
|
||||
Assert.NotNull(device);
|
||||
Assert.Equal("XXXXXX", device.Type);
|
||||
@@ -806,7 +807,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Instance
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Instance? instance)
|
||||
private static void Validate(Data.Models.Listxml.Instance? instance)
|
||||
{
|
||||
Assert.NotNull(instance);
|
||||
Assert.Equal("XXXXXX", instance.Name);
|
||||
@@ -816,7 +817,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Extension
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Extension? extension)
|
||||
private static void Validate(Data.Models.Listxml.Extension? extension)
|
||||
{
|
||||
Assert.NotNull(extension);
|
||||
Assert.Equal("XXXXXX", extension.Name);
|
||||
@@ -825,7 +826,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Slot
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Slot? slot)
|
||||
private static void Validate(Data.Models.Listxml.Slot? slot)
|
||||
{
|
||||
Assert.NotNull(slot);
|
||||
Assert.Equal("XXXXXX", slot.Name);
|
||||
@@ -838,7 +839,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a SlotOption
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.SlotOption? slotoption)
|
||||
private static void Validate(Data.Models.Listxml.SlotOption? slotoption)
|
||||
{
|
||||
Assert.NotNull(slotoption);
|
||||
Assert.Equal("XXXXXX", slotoption.Name);
|
||||
@@ -849,7 +850,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a SoftwareList
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.SoftwareList? softwarelist)
|
||||
private static void Validate(Data.Models.Listxml.SoftwareList? softwarelist)
|
||||
{
|
||||
Assert.NotNull(softwarelist);
|
||||
Assert.Equal("XXXXXX", softwarelist.Tag);
|
||||
@@ -861,7 +862,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a RamOption
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.RamOption? ramoption)
|
||||
private static void Validate(Data.Models.Listxml.RamOption? ramoption)
|
||||
{
|
||||
Assert.NotNull(ramoption);
|
||||
Assert.Equal("XXXXXX", ramoption.Name);
|
||||
@@ -869,4 +870,4 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Assert.Equal("XXXXXX", ramoption.Content);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
873
SabreTools.Serialization.Test/CrossModel/MessTests.cs
Normal file
873
SabreTools.Serialization.Test/CrossModel/MessTests.cs
Normal file
@@ -0,0 +1,873 @@
|
||||
using SabreTools.Serialization.CrossModel;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.CrossModel
|
||||
{
|
||||
public class MessTests
|
||||
{
|
||||
[Fact]
|
||||
public void RoundTripGameTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Mess();
|
||||
|
||||
// Build the data
|
||||
Data.Models.Listxml.Mess m1 = Build(game: true);
|
||||
|
||||
// Serialize to generic model
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(m1);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Data.Models.Listxml.Mess? newMess = serializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMess);
|
||||
Assert.Equal("XXXXXX", newMess.Version);
|
||||
|
||||
Assert.NotNull(newMess.Game);
|
||||
var newGame = Assert.Single(newMess.Game);
|
||||
Validate(newGame);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RoundTripMachineTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Mess();
|
||||
|
||||
// Build the data
|
||||
Data.Models.Listxml.Mess m1 = Build(game: false);
|
||||
|
||||
// Serialize to generic model
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(m1);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Data.Models.Listxml.Mess? newMess = serializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMess);
|
||||
Assert.Equal("XXXXXX", newMess.Version);
|
||||
|
||||
Assert.NotNull(newMess.Game);
|
||||
var newGame = Assert.Single(newMess.Game);
|
||||
Validate(newGame);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Data.Models.Listxml.Mess Build(bool game)
|
||||
{
|
||||
var biosset = new Data.Models.Listxml.BiosSet
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Description = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var rom = new Data.Models.Listxml.Rom
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Bios = "XXXXXX",
|
||||
Size = "XXXXXX",
|
||||
CRC = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
Merge = "XXXXXX",
|
||||
Region = "XXXXXX",
|
||||
Offset = "XXXXXX",
|
||||
Status = "XXXXXX",
|
||||
Optional = "XXXXXX",
|
||||
Dispose = "XXXXXX",
|
||||
SoundOnly = "XXXXXX",
|
||||
};
|
||||
|
||||
var disk = new Data.Models.Listxml.Disk
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
Merge = "XXXXXX",
|
||||
Region = "XXXXXX",
|
||||
Index = "XXXXXX",
|
||||
Writable = "XXXXXX",
|
||||
Status = "XXXXXX",
|
||||
Optional = "XXXXXX",
|
||||
};
|
||||
|
||||
var deviceref = new Data.Models.Listxml.DeviceRef
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var sample = new Data.Models.Listxml.Sample
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var chip = new Data.Models.Listxml.Chip
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
Type = "XXXXXX",
|
||||
SoundOnly = "XXXXXX",
|
||||
Clock = "XXXXXX",
|
||||
};
|
||||
|
||||
var display = new Data.Models.Listxml.Display
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Type = "XXXXXX",
|
||||
Rotate = "XXXXXX",
|
||||
FlipX = "XXXXXX",
|
||||
Width = "XXXXXX",
|
||||
Height = "XXXXXX",
|
||||
Refresh = "XXXXXX",
|
||||
PixClock = "XXXXXX",
|
||||
HTotal = "XXXXXX",
|
||||
HBEnd = "XXXXXX",
|
||||
HBStart = "XXXXXX",
|
||||
VTotal = "XXXXXX",
|
||||
VBEnd = "XXXXXX",
|
||||
VBStart = "XXXXXX",
|
||||
};
|
||||
|
||||
var video = new Data.Models.Listxml.Video
|
||||
{
|
||||
Screen = "XXXXXX",
|
||||
Orientation = "XXXXXX",
|
||||
Width = "XXXXXX",
|
||||
Height = "XXXXXX",
|
||||
AspectX = "XXXXXX",
|
||||
AspectY = "XXXXXX",
|
||||
Refresh = "XXXXXX",
|
||||
};
|
||||
|
||||
var sound = new Data.Models.Listxml.Sound
|
||||
{
|
||||
Channels = "XXXXXX",
|
||||
};
|
||||
|
||||
var control = new Data.Models.Listxml.Control
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Player = "XXXXXX",
|
||||
Buttons = "XXXXXX",
|
||||
ReqButtons = "XXXXXX",
|
||||
Minimum = "XXXXXX",
|
||||
Maximum = "XXXXXX",
|
||||
Sensitivity = "XXXXXX",
|
||||
KeyDelta = "XXXXXX",
|
||||
Reverse = "XXXXXX",
|
||||
Ways = "XXXXXX",
|
||||
Ways2 = "XXXXXX",
|
||||
Ways3 = "XXXXXX",
|
||||
};
|
||||
|
||||
var input = new Data.Models.Listxml.Input
|
||||
{
|
||||
Service = "XXXXXX",
|
||||
Tilt = "XXXXXX",
|
||||
Players = "XXXXXX",
|
||||
//ControlAttr = "XXXXXX", // Mututally exclusive with input.Control
|
||||
Buttons = "XXXXXX",
|
||||
Coins = "XXXXXX",
|
||||
Control = [control],
|
||||
};
|
||||
|
||||
var condition = new Data.Models.Listxml.Condition
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Mask = "XXXXXX",
|
||||
Relation = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
};
|
||||
|
||||
var diplocation = new Data.Models.Listxml.DipLocation
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Number = "XXXXXX",
|
||||
Inverted = "XXXXXX",
|
||||
};
|
||||
|
||||
var dipvalue = new Data.Models.Listxml.DipValue
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
Condition = condition,
|
||||
};
|
||||
|
||||
var dipswitch = new Data.Models.Listxml.DipSwitch
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
Mask = "XXXXXX",
|
||||
Condition = condition,
|
||||
DipLocation = [diplocation],
|
||||
DipValue = [dipvalue],
|
||||
};
|
||||
|
||||
var conflocation = new Data.Models.Listxml.ConfLocation
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Number = "XXXXXX",
|
||||
Inverted = "XXXXXX",
|
||||
};
|
||||
|
||||
var confsetting = new Data.Models.Listxml.ConfSetting
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
Condition = condition,
|
||||
};
|
||||
|
||||
var configuration = new Data.Models.Listxml.Configuration
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
Mask = "XXXXXX",
|
||||
Condition = condition,
|
||||
ConfLocation = [conflocation],
|
||||
ConfSetting = [confsetting],
|
||||
};
|
||||
|
||||
var analog = new Data.Models.Listxml.Analog
|
||||
{
|
||||
Mask = "XXXXXX",
|
||||
};
|
||||
|
||||
var port = new Data.Models.Listxml.Port
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Analog = [analog],
|
||||
};
|
||||
|
||||
var adjuster = new Data.Models.Listxml.Adjuster
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
Condition = condition,
|
||||
};
|
||||
|
||||
var driver = new Data.Models.Listxml.Driver
|
||||
{
|
||||
Status = "XXXXXX",
|
||||
Color = "XXXXXX",
|
||||
Sound = "XXXXXX",
|
||||
PaletteSize = "XXXXXX",
|
||||
Emulation = "XXXXXX",
|
||||
Cocktail = "XXXXXX",
|
||||
SaveState = "XXXXXX",
|
||||
RequiresArtwork = "XXXXXX",
|
||||
Unofficial = "XXXXXX",
|
||||
NoSoundHardware = "XXXXXX",
|
||||
Incomplete = "XXXXXX",
|
||||
};
|
||||
|
||||
var feature = new Data.Models.Listxml.Feature
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Status = "XXXXXX",
|
||||
Overall = "XXXXXX",
|
||||
};
|
||||
|
||||
var instance = new Data.Models.Listxml.Instance
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
BriefName = "XXXXXX",
|
||||
};
|
||||
|
||||
var extension = new Data.Models.Listxml.Extension
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var device = new Data.Models.Listxml.Device
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
FixedImage = "XXXXXX",
|
||||
Mandatory = "XXXXXX",
|
||||
Interface = "XXXXXX",
|
||||
Instance = instance,
|
||||
Extension = [extension],
|
||||
};
|
||||
|
||||
var slotOption = new Data.Models.Listxml.SlotOption
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
DevName = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var slot = new Data.Models.Listxml.Slot
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
SlotOption = [slotOption],
|
||||
};
|
||||
|
||||
var softwarelist = new Data.Models.Listxml.SoftwareList
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Name = "XXXXXX",
|
||||
Status = "XXXXXX",
|
||||
Filter = "XXXXXX",
|
||||
};
|
||||
|
||||
var ramoption = new Data.Models.Listxml.RamOption
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
Content = "XXXXXX",
|
||||
};
|
||||
|
||||
Data.Models.Listxml.GameBase gameBase = game
|
||||
? new Data.Models.Listxml.Game()
|
||||
: new Data.Models.Listxml.Machine();
|
||||
gameBase.Name = "XXXXXX";
|
||||
gameBase.SourceFile = "XXXXXX";
|
||||
gameBase.IsBios = "XXXXXX";
|
||||
gameBase.IsDevice = "XXXXXX";
|
||||
gameBase.IsMechanical = "XXXXXX";
|
||||
gameBase.Runnable = "XXXXXX";
|
||||
gameBase.CloneOf = "XXXXXX";
|
||||
gameBase.RomOf = "XXXXXX";
|
||||
gameBase.SampleOf = "XXXXXX";
|
||||
gameBase.Description = "XXXXXX";
|
||||
gameBase.Year = "XXXXXX";
|
||||
gameBase.Manufacturer = "XXXXXX";
|
||||
gameBase.History = "XXXXXX";
|
||||
gameBase.BiosSet = [biosset];
|
||||
gameBase.Rom = [rom];
|
||||
gameBase.Disk = [disk];
|
||||
gameBase.DeviceRef = [deviceref];
|
||||
gameBase.Sample = [sample];
|
||||
gameBase.Chip = [chip];
|
||||
gameBase.Display = [display];
|
||||
gameBase.Video = [video];
|
||||
gameBase.Sound = sound;
|
||||
gameBase.Input = input;
|
||||
gameBase.DipSwitch = [dipswitch];
|
||||
gameBase.Configuration = [configuration];
|
||||
gameBase.Port = [port];
|
||||
gameBase.Adjuster = [adjuster];
|
||||
gameBase.Driver = driver;
|
||||
gameBase.Feature = [feature];
|
||||
gameBase.Device = [device];
|
||||
gameBase.Slot = [slot];
|
||||
gameBase.SoftwareList = [softwarelist];
|
||||
gameBase.RamOption = [ramoption];
|
||||
|
||||
return new Data.Models.Listxml.Mess
|
||||
{
|
||||
Version = "XXXXXX",
|
||||
Game = [gameBase],
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a GameBase
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.GameBase? gb)
|
||||
{
|
||||
Assert.NotNull(gb);
|
||||
Assert.Equal("XXXXXX", gb.Name);
|
||||
Assert.Equal("XXXXXX", gb.SourceFile);
|
||||
Assert.Equal("XXXXXX", gb.IsBios);
|
||||
Assert.Equal("XXXXXX", gb.IsDevice);
|
||||
Assert.Equal("XXXXXX", gb.IsMechanical);
|
||||
Assert.Equal("XXXXXX", gb.Runnable);
|
||||
Assert.Equal("XXXXXX", gb.CloneOf);
|
||||
Assert.Equal("XXXXXX", gb.RomOf);
|
||||
Assert.Equal("XXXXXX", gb.SampleOf);
|
||||
Assert.Equal("XXXXXX", gb.Description);
|
||||
Assert.Equal("XXXXXX", gb.Year);
|
||||
Assert.Equal("XXXXXX", gb.Manufacturer);
|
||||
Assert.Equal("XXXXXX", gb.History);
|
||||
|
||||
Assert.NotNull(gb.BiosSet);
|
||||
var biosset = Assert.Single(gb.BiosSet);
|
||||
Validate(biosset);
|
||||
|
||||
Assert.NotNull(gb.Rom);
|
||||
var rom = Assert.Single(gb.Rom);
|
||||
Validate(rom);
|
||||
|
||||
Assert.NotNull(gb.Disk);
|
||||
var disk = Assert.Single(gb.Disk);
|
||||
Validate(disk);
|
||||
|
||||
Assert.NotNull(gb.DeviceRef);
|
||||
var deviceref = Assert.Single(gb.DeviceRef);
|
||||
Validate(deviceref);
|
||||
|
||||
Assert.NotNull(gb.Sample);
|
||||
var sample = Assert.Single(gb.Sample);
|
||||
Validate(sample);
|
||||
|
||||
Assert.NotNull(gb.Chip);
|
||||
var chip = Assert.Single(gb.Chip);
|
||||
Validate(chip);
|
||||
|
||||
Assert.NotNull(gb.Display);
|
||||
var display = Assert.Single(gb.Display);
|
||||
Validate(display);
|
||||
|
||||
Assert.NotNull(gb.Video);
|
||||
var video = Assert.Single(gb.Video);
|
||||
Validate(video);
|
||||
|
||||
Validate(gb.Sound);
|
||||
Validate(gb.Input);
|
||||
|
||||
Assert.NotNull(gb.DipSwitch);
|
||||
var dipswitch = Assert.Single(gb.DipSwitch);
|
||||
Validate(dipswitch);
|
||||
|
||||
Assert.NotNull(gb.Configuration);
|
||||
var configuration = Assert.Single(gb.Configuration);
|
||||
Validate(configuration);
|
||||
|
||||
Assert.NotNull(gb.Port);
|
||||
var port = Assert.Single(gb.Port);
|
||||
Validate(port);
|
||||
|
||||
Assert.NotNull(gb.Adjuster);
|
||||
var adjuster = Assert.Single(gb.Adjuster);
|
||||
Validate(adjuster);
|
||||
|
||||
Validate(gb.Driver);
|
||||
|
||||
Assert.NotNull(gb.Feature);
|
||||
var feature = Assert.Single(gb.Feature);
|
||||
Validate(feature);
|
||||
|
||||
Assert.NotNull(gb.Device);
|
||||
var device = Assert.Single(gb.Device);
|
||||
Validate(device);
|
||||
|
||||
Assert.NotNull(gb.Slot);
|
||||
var slot = Assert.Single(gb.Slot);
|
||||
Validate(slot);
|
||||
|
||||
Assert.NotNull(gb.SoftwareList);
|
||||
var softwarelist = Assert.Single(gb.SoftwareList);
|
||||
Validate(softwarelist);
|
||||
|
||||
Assert.NotNull(gb.RamOption);
|
||||
var ramoption = Assert.Single(gb.RamOption);
|
||||
Validate(ramoption);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a BiosSet
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.BiosSet? biosset)
|
||||
{
|
||||
Assert.NotNull(biosset);
|
||||
Assert.Equal("XXXXXX", biosset.Name);
|
||||
Assert.Equal("XXXXXX", biosset.Description);
|
||||
Assert.Equal("XXXXXX", biosset.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Rom
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Rom? rom)
|
||||
{
|
||||
Assert.NotNull(rom);
|
||||
Assert.Equal("XXXXXX", rom.Name);
|
||||
Assert.Equal("XXXXXX", rom.Bios);
|
||||
Assert.Equal("XXXXXX", rom.Size);
|
||||
Assert.Equal("XXXXXX", rom.CRC);
|
||||
Assert.Equal("XXXXXX", rom.SHA1);
|
||||
Assert.Equal("XXXXXX", rom.Merge);
|
||||
Assert.Equal("XXXXXX", rom.Region);
|
||||
Assert.Equal("XXXXXX", rom.Offset);
|
||||
Assert.Equal("XXXXXX", rom.Status);
|
||||
Assert.Equal("XXXXXX", rom.Optional);
|
||||
Assert.Equal("XXXXXX", rom.Dispose);
|
||||
Assert.Equal("XXXXXX", rom.SoundOnly);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Disk
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Disk? disk)
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("XXXXXX", disk.Name);
|
||||
Assert.Equal("XXXXXX", disk.MD5);
|
||||
Assert.Equal("XXXXXX", disk.SHA1);
|
||||
Assert.Equal("XXXXXX", disk.Merge);
|
||||
Assert.Equal("XXXXXX", disk.Region);
|
||||
Assert.Equal("XXXXXX", disk.Index);
|
||||
Assert.Equal("XXXXXX", disk.Writable);
|
||||
Assert.Equal("XXXXXX", disk.Status);
|
||||
Assert.Equal("XXXXXX", disk.Optional);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a DeviceRef
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.DeviceRef? deviceref)
|
||||
{
|
||||
Assert.NotNull(deviceref);
|
||||
Assert.Equal("XXXXXX", deviceref.Name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Sample
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Sample? sample)
|
||||
{
|
||||
Assert.NotNull(sample);
|
||||
Assert.Equal("XXXXXX", sample.Name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Chip
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Chip? chip)
|
||||
{
|
||||
Assert.NotNull(chip);
|
||||
Assert.Equal("XXXXXX", chip.Name);
|
||||
Assert.Equal("XXXXXX", chip.Tag);
|
||||
Assert.Equal("XXXXXX", chip.Type);
|
||||
Assert.Equal("XXXXXX", chip.SoundOnly);
|
||||
Assert.Equal("XXXXXX", chip.Clock);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Display
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Display? display)
|
||||
{
|
||||
Assert.NotNull(display);
|
||||
Assert.Equal("XXXXXX", display.Tag);
|
||||
Assert.Equal("XXXXXX", display.Type);
|
||||
Assert.Equal("XXXXXX", display.Rotate);
|
||||
Assert.Equal("XXXXXX", display.FlipX);
|
||||
Assert.Equal("XXXXXX", display.Width);
|
||||
Assert.Equal("XXXXXX", display.Height);
|
||||
Assert.Equal("XXXXXX", display.Refresh);
|
||||
Assert.Equal("XXXXXX", display.PixClock);
|
||||
Assert.Equal("XXXXXX", display.HTotal);
|
||||
Assert.Equal("XXXXXX", display.HBEnd);
|
||||
Assert.Equal("XXXXXX", display.HBStart);
|
||||
Assert.Equal("XXXXXX", display.VTotal);
|
||||
Assert.Equal("XXXXXX", display.VBEnd);
|
||||
Assert.Equal("XXXXXX", display.VBStart);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Video
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Video? video)
|
||||
{
|
||||
Assert.NotNull(video);
|
||||
Assert.Equal("XXXXXX", video.Screen);
|
||||
Assert.Equal("XXXXXX", video.Orientation);
|
||||
Assert.Equal("XXXXXX", video.Width);
|
||||
Assert.Equal("XXXXXX", video.Height);
|
||||
Assert.Equal("XXXXXX", video.AspectX);
|
||||
Assert.Equal("XXXXXX", video.AspectY);
|
||||
Assert.Equal("XXXXXX", video.Refresh);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Sound
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Sound? sound)
|
||||
{
|
||||
Assert.NotNull(sound);
|
||||
Assert.Equal("XXXXXX", sound.Channels);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Input
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Input? input)
|
||||
{
|
||||
Assert.NotNull(input);
|
||||
Assert.Equal("XXXXXX", input.Service);
|
||||
Assert.Equal("XXXXXX", input.Tilt);
|
||||
Assert.Equal("XXXXXX", input.Players);
|
||||
//Assert.Equal("XXXXXX", input.ControlAttr); // Mututally exclusive with input.Control
|
||||
Assert.Equal("XXXXXX", input.Buttons);
|
||||
Assert.Equal("XXXXXX", input.Coins);
|
||||
|
||||
Assert.NotNull(input.Control);
|
||||
var control = Assert.Single(input.Control);
|
||||
Validate(control);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Control
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Control? control)
|
||||
{
|
||||
Assert.NotNull(control);
|
||||
Assert.Equal("XXXXXX", control.Type);
|
||||
Assert.Equal("XXXXXX", control.Player);
|
||||
Assert.Equal("XXXXXX", control.Buttons);
|
||||
Assert.Equal("XXXXXX", control.ReqButtons);
|
||||
Assert.Equal("XXXXXX", control.Minimum);
|
||||
Assert.Equal("XXXXXX", control.Maximum);
|
||||
Assert.Equal("XXXXXX", control.Sensitivity);
|
||||
Assert.Equal("XXXXXX", control.KeyDelta);
|
||||
Assert.Equal("XXXXXX", control.Reverse);
|
||||
Assert.Equal("XXXXXX", control.Ways);
|
||||
Assert.Equal("XXXXXX", control.Ways2);
|
||||
Assert.Equal("XXXXXX", control.Ways3);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a DipSwitch
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.DipSwitch? dipswitch)
|
||||
{
|
||||
Assert.NotNull(dipswitch);
|
||||
Assert.Equal("XXXXXX", dipswitch.Name);
|
||||
Assert.Equal("XXXXXX", dipswitch.Tag);
|
||||
Assert.Equal("XXXXXX", dipswitch.Mask);
|
||||
Validate(dipswitch.Condition);
|
||||
|
||||
Assert.NotNull(dipswitch.DipLocation);
|
||||
var diplocation = Assert.Single(dipswitch.DipLocation);
|
||||
Validate(diplocation);
|
||||
|
||||
Assert.NotNull(dipswitch.DipValue);
|
||||
var dipvalue = Assert.Single(dipswitch.DipValue);
|
||||
Validate(dipvalue);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Condition
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Condition? condition)
|
||||
{
|
||||
Assert.NotNull(condition);
|
||||
Assert.Equal("XXXXXX", condition.Tag);
|
||||
Assert.Equal("XXXXXX", condition.Mask);
|
||||
Assert.Equal("XXXXXX", condition.Relation);
|
||||
Assert.Equal("XXXXXX", condition.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a DipLocation
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.DipLocation? diplocation)
|
||||
{
|
||||
Assert.NotNull(diplocation);
|
||||
Assert.Equal("XXXXXX", diplocation.Name);
|
||||
Assert.Equal("XXXXXX", diplocation.Number);
|
||||
Assert.Equal("XXXXXX", diplocation.Inverted);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a DipValue
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.DipValue? dipvalue)
|
||||
{
|
||||
Assert.NotNull(dipvalue);
|
||||
Assert.Equal("XXXXXX", dipvalue.Name);
|
||||
Assert.Equal("XXXXXX", dipvalue.Value);
|
||||
Assert.Equal("XXXXXX", dipvalue.Default);
|
||||
Validate(dipvalue.Condition);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Configuration
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Configuration? configuration)
|
||||
{
|
||||
Assert.NotNull(configuration);
|
||||
Assert.Equal("XXXXXX", configuration.Name);
|
||||
Assert.Equal("XXXXXX", configuration.Tag);
|
||||
Assert.Equal("XXXXXX", configuration.Mask);
|
||||
Validate(configuration.Condition);
|
||||
|
||||
Assert.NotNull(configuration.ConfLocation);
|
||||
var conflocation = Assert.Single(configuration.ConfLocation);
|
||||
Validate(conflocation);
|
||||
|
||||
Assert.NotNull(configuration.ConfSetting);
|
||||
var confsetting = Assert.Single(configuration.ConfSetting);
|
||||
Validate(confsetting);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a ConfLocation
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.ConfLocation? conflocation)
|
||||
{
|
||||
Assert.NotNull(conflocation);
|
||||
Assert.Equal("XXXXXX", conflocation.Name);
|
||||
Assert.Equal("XXXXXX", conflocation.Number);
|
||||
Assert.Equal("XXXXXX", conflocation.Inverted);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a ConfSetting
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.ConfSetting? confsetting)
|
||||
{
|
||||
Assert.NotNull(confsetting);
|
||||
Assert.Equal("XXXXXX", confsetting.Name);
|
||||
Assert.Equal("XXXXXX", confsetting.Value);
|
||||
Assert.Equal("XXXXXX", confsetting.Default);
|
||||
Validate(confsetting.Condition);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Port
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Port? port)
|
||||
{
|
||||
Assert.NotNull(port);
|
||||
Assert.Equal("XXXXXX", port.Tag);
|
||||
|
||||
Assert.NotNull(port.Analog);
|
||||
var analog = Assert.Single(port.Analog);
|
||||
Validate(analog);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Analog
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Analog? analog)
|
||||
{
|
||||
Assert.NotNull(analog);
|
||||
Assert.Equal("XXXXXX", analog.Mask);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Adjuster
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Adjuster? adjuster)
|
||||
{
|
||||
Assert.NotNull(adjuster);
|
||||
Assert.Equal("XXXXXX", adjuster.Name);
|
||||
Assert.Equal("XXXXXX", adjuster.Default);
|
||||
Validate(adjuster.Condition);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Driver
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Driver? driver)
|
||||
{
|
||||
Assert.NotNull(driver);
|
||||
Assert.Equal("XXXXXX", driver.Status);
|
||||
Assert.Equal("XXXXXX", driver.Color);
|
||||
Assert.Equal("XXXXXX", driver.Sound);
|
||||
Assert.Equal("XXXXXX", driver.PaletteSize);
|
||||
Assert.Equal("XXXXXX", driver.Emulation);
|
||||
Assert.Equal("XXXXXX", driver.Cocktail);
|
||||
Assert.Equal("XXXXXX", driver.SaveState);
|
||||
Assert.Equal("XXXXXX", driver.RequiresArtwork);
|
||||
Assert.Equal("XXXXXX", driver.Unofficial);
|
||||
Assert.Equal("XXXXXX", driver.NoSoundHardware);
|
||||
Assert.Equal("XXXXXX", driver.Incomplete);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Feature
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Feature? feature)
|
||||
{
|
||||
Assert.NotNull(feature);
|
||||
Assert.Equal("XXXXXX", feature.Type);
|
||||
Assert.Equal("XXXXXX", feature.Status);
|
||||
Assert.Equal("XXXXXX", feature.Overall);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Device
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Device? device)
|
||||
{
|
||||
Assert.NotNull(device);
|
||||
Assert.Equal("XXXXXX", device.Type);
|
||||
Assert.Equal("XXXXXX", device.Tag);
|
||||
Assert.Equal("XXXXXX", device.FixedImage);
|
||||
Assert.Equal("XXXXXX", device.Mandatory);
|
||||
Assert.Equal("XXXXXX", device.Interface);
|
||||
Validate(device.Instance);
|
||||
|
||||
Assert.NotNull(device.Extension);
|
||||
var extension = Assert.Single(device.Extension);
|
||||
Validate(extension);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Instance
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Instance? instance)
|
||||
{
|
||||
Assert.NotNull(instance);
|
||||
Assert.Equal("XXXXXX", instance.Name);
|
||||
Assert.Equal("XXXXXX", instance.BriefName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Extension
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Extension? extension)
|
||||
{
|
||||
Assert.NotNull(extension);
|
||||
Assert.Equal("XXXXXX", extension.Name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Slot
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Slot? slot)
|
||||
{
|
||||
Assert.NotNull(slot);
|
||||
Assert.Equal("XXXXXX", slot.Name);
|
||||
|
||||
Assert.NotNull(slot.SlotOption);
|
||||
var slotoption = Assert.Single(slot.SlotOption);
|
||||
Validate(slotoption);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a SlotOption
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.SlotOption? slotoption)
|
||||
{
|
||||
Assert.NotNull(slotoption);
|
||||
Assert.Equal("XXXXXX", slotoption.Name);
|
||||
Assert.Equal("XXXXXX", slotoption.DevName);
|
||||
Assert.Equal("XXXXXX", slotoption.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a SoftwareList
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.SoftwareList? softwarelist)
|
||||
{
|
||||
Assert.NotNull(softwarelist);
|
||||
Assert.Equal("XXXXXX", softwarelist.Tag);
|
||||
Assert.Equal("XXXXXX", softwarelist.Name);
|
||||
Assert.Equal("XXXXXX", softwarelist.Status);
|
||||
Assert.Equal("XXXXXX", softwarelist.Filter);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a RamOption
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.RamOption? ramoption)
|
||||
{
|
||||
Assert.NotNull(ramoption);
|
||||
Assert.Equal("XXXXXX", ramoption.Name);
|
||||
Assert.Equal("XXXXXX", ramoption.Default);
|
||||
Assert.Equal("XXXXXX", ramoption.Content);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
using SabreTools.Serialization.CrossModel;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.CrossModel
|
||||
@@ -8,17 +9,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.OfflineList();
|
||||
var serializer = new OfflineList();
|
||||
|
||||
// Build the data
|
||||
Models.OfflineList.Dat dat = Build();
|
||||
Data.Models.OfflineList.Dat dat = Build();
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(dat);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(dat);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.OfflineList.Dat? newDat = serializer.Deserialize(metadata);
|
||||
Data.Models.OfflineList.Dat? newDat = serializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newDat);
|
||||
@@ -31,89 +32,89 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.OfflineList.Dat Build()
|
||||
private static Data.Models.OfflineList.Dat Build()
|
||||
{
|
||||
var infos = new Models.OfflineList.Infos
|
||||
var infos = new Data.Models.OfflineList.Infos
|
||||
{
|
||||
Title = new Models.OfflineList.Title
|
||||
Title = new Data.Models.OfflineList.Title
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
Location = new Models.OfflineList.Location
|
||||
Location = new Data.Models.OfflineList.Location
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
Publisher = new Models.OfflineList.Publisher
|
||||
Publisher = new Data.Models.OfflineList.Publisher
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
SourceRom = new Models.OfflineList.SourceRom
|
||||
SourceRom = new Data.Models.OfflineList.SourceRom
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
SaveType = new Models.OfflineList.SaveType
|
||||
SaveType = new Data.Models.OfflineList.SaveType
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
RomSize = new Models.OfflineList.RomSize
|
||||
RomSize = new Data.Models.OfflineList.RomSize
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
ReleaseNumber = new Models.OfflineList.ReleaseNumber
|
||||
ReleaseNumber = new Data.Models.OfflineList.ReleaseNumber
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
ImageNumber = new Models.OfflineList.ImageNumber
|
||||
ImageNumber = new Data.Models.OfflineList.ImageNumber
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
LanguageNumber = new Models.OfflineList.LanguageNumber
|
||||
LanguageNumber = new Data.Models.OfflineList.LanguageNumber
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
Comment = new Models.OfflineList.Comment
|
||||
Comment = new Data.Models.OfflineList.Comment
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
RomCRC = new Models.OfflineList.RomCRC
|
||||
RomCRC = new Data.Models.OfflineList.RomCRC
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
Im1CRC = new Models.OfflineList.Im1CRC
|
||||
Im1CRC = new Data.Models.OfflineList.Im1CRC
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
Im2CRC = new Models.OfflineList.Im2CRC
|
||||
Im2CRC = new Data.Models.OfflineList.Im2CRC
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
Languages = new Models.OfflineList.Languages
|
||||
Languages = new Data.Models.OfflineList.Languages
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
@@ -121,32 +122,32 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
},
|
||||
};
|
||||
|
||||
var canopen = new Models.OfflineList.CanOpen
|
||||
var canopen = new Data.Models.OfflineList.CanOpen
|
||||
{
|
||||
Extension = ["XXXXXX"],
|
||||
};
|
||||
|
||||
var daturl = new Models.OfflineList.DatUrl
|
||||
var daturl = new Data.Models.OfflineList.DatUrl
|
||||
{
|
||||
FileName = "XXXXXX",
|
||||
Content = "XXXXXX",
|
||||
};
|
||||
|
||||
var newdat = new Models.OfflineList.NewDat
|
||||
var newdat = new Data.Models.OfflineList.NewDat
|
||||
{
|
||||
DatVersionUrl = "XXXXXX",
|
||||
DatUrl = daturl,
|
||||
ImUrl = "XXXXXX",
|
||||
};
|
||||
|
||||
var find = new Models.OfflineList.Find
|
||||
var find = new Data.Models.OfflineList.Find
|
||||
{
|
||||
Operation = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
Content = "XXXXXX",
|
||||
};
|
||||
|
||||
var to = new Models.OfflineList.To
|
||||
var to = new Data.Models.OfflineList.To
|
||||
{
|
||||
Value = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
@@ -154,12 +155,12 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Find = [find],
|
||||
};
|
||||
|
||||
var search = new Models.OfflineList.Search
|
||||
var search = new Data.Models.OfflineList.Search
|
||||
{
|
||||
To = [to],
|
||||
};
|
||||
|
||||
var configuration = new Models.OfflineList.Configuration
|
||||
var configuration = new Data.Models.OfflineList.Configuration
|
||||
{
|
||||
DatName = "XXXXXX",
|
||||
ImFolder = "XXXXXX",
|
||||
@@ -174,18 +175,18 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
RomTitle = "XXXXXX",
|
||||
};
|
||||
|
||||
var fileromcrc = new Models.OfflineList.FileRomCRC
|
||||
var fileromcrc = new Data.Models.OfflineList.FileRomCRC
|
||||
{
|
||||
Extension = "XXXXXX",
|
||||
Content = "XXXXXX",
|
||||
};
|
||||
|
||||
var files = new Models.OfflineList.Files
|
||||
var files = new Data.Models.OfflineList.Files
|
||||
{
|
||||
RomCRC = [fileromcrc],
|
||||
};
|
||||
|
||||
var game = new Models.OfflineList.Game
|
||||
var game = new Data.Models.OfflineList.Game
|
||||
{
|
||||
ImageNumber = "XXXXXX",
|
||||
ReleaseNumber = "XXXXXX",
|
||||
@@ -203,12 +204,12 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
DuplicateID = "XXXXXX",
|
||||
};
|
||||
|
||||
var games = new Models.OfflineList.Games
|
||||
var games = new Data.Models.OfflineList.Games
|
||||
{
|
||||
Game = [game],
|
||||
};
|
||||
|
||||
var image = new Models.OfflineList.Image
|
||||
var image = new Data.Models.OfflineList.Image
|
||||
{
|
||||
X = "XXXXXX",
|
||||
Y = "XXXXXX",
|
||||
@@ -216,19 +217,19 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Height = "XXXXXX",
|
||||
};
|
||||
|
||||
var images = new Models.OfflineList.Images
|
||||
var images = new Data.Models.OfflineList.Images
|
||||
{
|
||||
Width = "XXXXXX",
|
||||
Height = "XXXXXX",
|
||||
Image = [image],
|
||||
};
|
||||
|
||||
var gui = new Models.OfflineList.GUI
|
||||
var gui = new Data.Models.OfflineList.GUI
|
||||
{
|
||||
Images = images,
|
||||
};
|
||||
|
||||
return new Models.OfflineList.Dat
|
||||
return new Data.Models.OfflineList.Dat
|
||||
{
|
||||
NoNamespaceSchemaLocation = "XXXXXX",
|
||||
Configuration = configuration,
|
||||
@@ -240,7 +241,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Configuration
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.Configuration? configuration)
|
||||
private static void Validate(Data.Models.OfflineList.Configuration? configuration)
|
||||
{
|
||||
Assert.NotNull(configuration);
|
||||
Assert.Equal("XXXXXX", configuration.DatName);
|
||||
@@ -259,7 +260,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Infos
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.Infos? infos)
|
||||
private static void Validate(Data.Models.OfflineList.Infos? infos)
|
||||
{
|
||||
Assert.NotNull(infos);
|
||||
Validate(infos.Title);
|
||||
@@ -281,7 +282,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a InfoBase
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.InfoBase? info)
|
||||
private static void Validate(Data.Models.OfflineList.InfoBase? info)
|
||||
{
|
||||
Assert.NotNull(info);
|
||||
Assert.Equal("XXXXXX", info.Visible);
|
||||
@@ -292,7 +293,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a CanOpen
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.CanOpen? canopen)
|
||||
private static void Validate(Data.Models.OfflineList.CanOpen? canopen)
|
||||
{
|
||||
Assert.NotNull(canopen);
|
||||
Assert.NotNull(canopen.Extension);
|
||||
@@ -303,7 +304,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a NewDat
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.NewDat? newdat)
|
||||
private static void Validate(Data.Models.OfflineList.NewDat? newdat)
|
||||
{
|
||||
Assert.NotNull(newdat);
|
||||
Assert.Equal("XXXXXX", newdat.DatVersionUrl);
|
||||
@@ -314,7 +315,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a DatUrl
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.DatUrl? daturl)
|
||||
private static void Validate(Data.Models.OfflineList.DatUrl? daturl)
|
||||
{
|
||||
Assert.NotNull(daturl);
|
||||
Assert.Equal("XXXXXX", daturl.FileName);
|
||||
@@ -324,7 +325,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Search
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.Search? search)
|
||||
private static void Validate(Data.Models.OfflineList.Search? search)
|
||||
{
|
||||
Assert.NotNull(search);
|
||||
Assert.NotNull(search.To);
|
||||
@@ -335,7 +336,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a To
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.To? to)
|
||||
private static void Validate(Data.Models.OfflineList.To? to)
|
||||
{
|
||||
Assert.NotNull(to);
|
||||
Assert.Equal("XXXXXX", to.Value);
|
||||
@@ -350,7 +351,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Find
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.Find? find)
|
||||
private static void Validate(Data.Models.OfflineList.Find? find)
|
||||
{
|
||||
Assert.NotNull(find);
|
||||
Assert.Equal("XXXXXX", find.Operation);
|
||||
@@ -361,7 +362,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Games
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.Games? games)
|
||||
private static void Validate(Data.Models.OfflineList.Games? games)
|
||||
{
|
||||
Assert.NotNull(games);
|
||||
Assert.NotNull(games.Game);
|
||||
@@ -372,7 +373,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Game
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.Game? game)
|
||||
private static void Validate(Data.Models.OfflineList.Game? game)
|
||||
{
|
||||
Assert.NotNull(game);
|
||||
Assert.Equal("XXXXXX", game.ImageNumber);
|
||||
@@ -394,7 +395,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Files
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.Files? files)
|
||||
private static void Validate(Data.Models.OfflineList.Files? files)
|
||||
{
|
||||
Assert.NotNull(files);
|
||||
Assert.NotNull(files.RomCRC);
|
||||
@@ -405,7 +406,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a FileRomCRC
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.FileRomCRC? fileromcrc)
|
||||
private static void Validate(Data.Models.OfflineList.FileRomCRC? fileromcrc)
|
||||
{
|
||||
Assert.NotNull(fileromcrc);
|
||||
Assert.Equal("XXXXXX", fileromcrc.Extension);
|
||||
@@ -415,7 +416,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a GUI
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.GUI? gui)
|
||||
private static void Validate(Data.Models.OfflineList.GUI? gui)
|
||||
{
|
||||
Assert.NotNull(gui);
|
||||
Validate(gui.Images);
|
||||
@@ -424,7 +425,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Images
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.Images? images)
|
||||
private static void Validate(Data.Models.OfflineList.Images? images)
|
||||
{
|
||||
Assert.NotNull(images);
|
||||
Assert.Equal("XXXXXX", images.Width);
|
||||
@@ -438,7 +439,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Image
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.Image? image)
|
||||
private static void Validate(Data.Models.OfflineList.Image? image)
|
||||
{
|
||||
Assert.NotNull(image);
|
||||
Assert.Equal("XXXXXX", image.X);
|
||||
@@ -447,4 +448,4 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Assert.Equal("XXXXXX", image.Height);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using SabreTools.Serialization.CrossModel;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.CrossModel
|
||||
@@ -8,17 +9,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.OpenMSX();
|
||||
var serializer = new OpenMSX();
|
||||
|
||||
// Build the data
|
||||
Models.OpenMSX.SoftwareDb sdb = Build();
|
||||
Data.Models.OpenMSX.SoftwareDb sdb = Build();
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(sdb);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(sdb);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.OpenMSX.SoftwareDb? newSdb = serializer.Deserialize(metadata);
|
||||
Data.Models.OpenMSX.SoftwareDb? newSdb = serializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newSdb);
|
||||
@@ -32,15 +33,15 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.OpenMSX.SoftwareDb Build()
|
||||
private static Data.Models.OpenMSX.SoftwareDb Build()
|
||||
{
|
||||
var original = new Models.OpenMSX.Original
|
||||
var original = new Data.Models.OpenMSX.Original
|
||||
{
|
||||
Value = "XXXXXX",
|
||||
Content = "XXXXXX",
|
||||
};
|
||||
|
||||
var rom = new Models.OpenMSX.Rom
|
||||
var rom = new Data.Models.OpenMSX.Rom
|
||||
{
|
||||
Start = "XXXXXX",
|
||||
Type = "XXXXXX",
|
||||
@@ -48,13 +49,13 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Remark = "XXXXXX",
|
||||
};
|
||||
|
||||
var dump_rom = new Models.OpenMSX.Dump
|
||||
var dump_rom = new Data.Models.OpenMSX.Dump
|
||||
{
|
||||
Original = original,
|
||||
Rom = rom,
|
||||
};
|
||||
|
||||
var megarom = new Models.OpenMSX.MegaRom
|
||||
var megarom = new Data.Models.OpenMSX.MegaRom
|
||||
{
|
||||
Start = "XXXXXX",
|
||||
Type = "XXXXXX",
|
||||
@@ -62,13 +63,13 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Remark = "XXXXXX",
|
||||
};
|
||||
|
||||
var dump_megarom = new Models.OpenMSX.Dump
|
||||
var dump_megarom = new Data.Models.OpenMSX.Dump
|
||||
{
|
||||
Original = original,
|
||||
Rom = megarom,
|
||||
};
|
||||
|
||||
var sccpluscart = new Models.OpenMSX.SCCPlusCart
|
||||
var sccpluscart = new Data.Models.OpenMSX.SCCPlusCart
|
||||
{
|
||||
Start = "XXXXXX",
|
||||
Type = "XXXXXX",
|
||||
@@ -76,13 +77,13 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Remark = "XXXXXX",
|
||||
};
|
||||
|
||||
var dump_sccpluscart = new Models.OpenMSX.Dump
|
||||
var dump_sccpluscart = new Data.Models.OpenMSX.Dump
|
||||
{
|
||||
Original = original,
|
||||
Rom = sccpluscart,
|
||||
};
|
||||
|
||||
var software = new Models.OpenMSX.Software
|
||||
|
||||
var software = new Data.Models.OpenMSX.Software
|
||||
{
|
||||
Title = "XXXXXX",
|
||||
GenMSXID = "XXXXXX",
|
||||
@@ -93,7 +94,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Dump = [dump_rom, dump_megarom, dump_sccpluscart],
|
||||
};
|
||||
|
||||
return new Models.OpenMSX.SoftwareDb
|
||||
return new Data.Models.OpenMSX.SoftwareDb
|
||||
{
|
||||
Timestamp = "XXXXXX",
|
||||
Software = [software],
|
||||
@@ -103,7 +104,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Software
|
||||
/// </summary>
|
||||
private static void Validate(Models.OpenMSX.Software? software)
|
||||
private static void Validate(Data.Models.OpenMSX.Software? software)
|
||||
{
|
||||
Assert.NotNull(software);
|
||||
Assert.Equal("XXXXXX", software.Title);
|
||||
@@ -124,7 +125,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Dump
|
||||
/// </summary>
|
||||
private static void Validate(Models.OpenMSX.Dump? dump)
|
||||
private static void Validate(Data.Models.OpenMSX.Dump? dump)
|
||||
{
|
||||
Assert.NotNull(dump);
|
||||
Validate(dump.Original);
|
||||
@@ -134,7 +135,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Original
|
||||
/// </summary>
|
||||
private static void Validate(Models.OpenMSX.Original? original)
|
||||
private static void Validate(Data.Models.OpenMSX.Original? original)
|
||||
{
|
||||
Assert.NotNull(original);
|
||||
Assert.Equal("XXXXXX", original.Value);
|
||||
@@ -144,7 +145,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a RomBase
|
||||
/// </summary>
|
||||
private static void Validate(Models.OpenMSX.RomBase? rombase)
|
||||
private static void Validate(Data.Models.OpenMSX.RomBase? rombase)
|
||||
{
|
||||
Assert.NotNull(rombase);
|
||||
Assert.Equal("XXXXXX", rombase.Start);
|
||||
@@ -153,4 +154,4 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Assert.Equal("XXXXXX", rombase.Remark);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using SabreTools.Serialization.CrossModel;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.CrossModel
|
||||
@@ -8,17 +9,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.RomCenter();
|
||||
var serializer = new RomCenter();
|
||||
|
||||
// Build the data
|
||||
Models.RomCenter.MetadataFile mf = Build();
|
||||
Data.Models.RomCenter.MetadataFile mf = Build();
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(mf);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(mf);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.RomCenter.MetadataFile? newMf = serializer.Deserialize(metadata);
|
||||
Data.Models.RomCenter.MetadataFile? newMf = serializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
@@ -31,9 +32,9 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.RomCenter.MetadataFile Build()
|
||||
private static Data.Models.RomCenter.MetadataFile Build()
|
||||
{
|
||||
var credits = new Models.RomCenter.Credits
|
||||
var credits = new Data.Models.RomCenter.Credits
|
||||
{
|
||||
Author = "XXXXXX",
|
||||
Version = "XXXXXX",
|
||||
@@ -44,7 +45,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Comment = "XXXXXX",
|
||||
};
|
||||
|
||||
var dat = new Models.RomCenter.Dat
|
||||
var dat = new Data.Models.RomCenter.Dat
|
||||
{
|
||||
Version = "XXXXXX",
|
||||
Plugin = "XXXXXX",
|
||||
@@ -52,13 +53,13 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Merge = "XXXXXX",
|
||||
};
|
||||
|
||||
var emulator = new Models.RomCenter.Emulator
|
||||
var emulator = new Data.Models.RomCenter.Emulator
|
||||
{
|
||||
RefName = "XXXXXX",
|
||||
Version = "XXXXXX",
|
||||
};
|
||||
|
||||
var rom = new Models.RomCenter.Rom
|
||||
var rom = new Data.Models.RomCenter.Rom
|
||||
{
|
||||
ParentName = "XXXXXX",
|
||||
ParentDescription = "XXXXXX",
|
||||
@@ -71,12 +72,12 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
MergeName = "XXXXXX",
|
||||
};
|
||||
|
||||
var games = new Models.RomCenter.Games
|
||||
var games = new Data.Models.RomCenter.Games
|
||||
{
|
||||
Rom = [rom],
|
||||
};
|
||||
|
||||
return new Models.RomCenter.MetadataFile
|
||||
return new Data.Models.RomCenter.MetadataFile
|
||||
{
|
||||
Credits = credits,
|
||||
Dat = dat,
|
||||
@@ -88,7 +89,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Credits
|
||||
/// </summary>
|
||||
private static void Validate(Models.RomCenter.Credits? credits)
|
||||
private static void Validate(Data.Models.RomCenter.Credits? credits)
|
||||
{
|
||||
Assert.NotNull(credits);
|
||||
Assert.Equal("XXXXXX", credits.Author);
|
||||
@@ -103,7 +104,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Dat
|
||||
/// </summary>
|
||||
private static void Validate(Models.RomCenter.Dat? dat)
|
||||
private static void Validate(Data.Models.RomCenter.Dat? dat)
|
||||
{
|
||||
Assert.NotNull(dat);
|
||||
Assert.Equal("XXXXXX", dat.Version);
|
||||
@@ -115,7 +116,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Emulator
|
||||
/// </summary>
|
||||
private static void Validate(Models.RomCenter.Emulator? emulator)
|
||||
private static void Validate(Data.Models.RomCenter.Emulator? emulator)
|
||||
{
|
||||
Assert.NotNull(emulator);
|
||||
Assert.Equal("XXXXXX", emulator.RefName);
|
||||
@@ -125,7 +126,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Games
|
||||
/// </summary>
|
||||
private static void Validate(Models.RomCenter.Games? games)
|
||||
private static void Validate(Data.Models.RomCenter.Games? games)
|
||||
{
|
||||
Assert.NotNull(games);
|
||||
Assert.NotNull(games.Rom);
|
||||
@@ -136,7 +137,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Rom
|
||||
/// </summary>
|
||||
private static void Validate(Models.RomCenter.Rom? rom)
|
||||
private static void Validate(Data.Models.RomCenter.Rom? rom)
|
||||
{
|
||||
Assert.NotNull(rom);
|
||||
Assert.Equal("XXXXXX", rom.ParentName);
|
||||
@@ -150,4 +151,4 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Assert.Equal("XXXXXX", rom.MergeName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using SabreTools.Serialization.CrossModel;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.CrossModel
|
||||
@@ -8,17 +9,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.SeparatedValue();
|
||||
var serializer = new SeparatedValue();
|
||||
|
||||
// Build the data
|
||||
Models.SeparatedValue.MetadataFile mf = Build();
|
||||
Data.Models.SeparatedValue.MetadataFile mf = Build();
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(mf);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(mf);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.SeparatedValue.MetadataFile? newMf = serializer.Deserialize(metadata);
|
||||
Data.Models.SeparatedValue.MetadataFile? newMf = serializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
@@ -34,11 +35,11 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.SeparatedValue.MetadataFile Build()
|
||||
private static Data.Models.SeparatedValue.MetadataFile Build()
|
||||
{
|
||||
string[] header = ["header"];
|
||||
|
||||
var disk = new Models.SeparatedValue.Row
|
||||
var disk = new Data.Models.SeparatedValue.Row
|
||||
{
|
||||
FileName = "XXXXXX",
|
||||
InternalName = "XXXXXX",
|
||||
@@ -52,7 +53,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Status = "XXXXXX",
|
||||
};
|
||||
|
||||
var media = new Models.SeparatedValue.Row
|
||||
var media = new Data.Models.SeparatedValue.Row
|
||||
{
|
||||
FileName = "XXXXXX",
|
||||
InternalName = "XXXXXX",
|
||||
@@ -67,7 +68,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
SpamSum = "XXXXXX",
|
||||
};
|
||||
|
||||
var rom = new Models.SeparatedValue.Row
|
||||
var rom = new Data.Models.SeparatedValue.Row
|
||||
{
|
||||
FileName = "XXXXXX",
|
||||
InternalName = "XXXXXX",
|
||||
@@ -87,7 +88,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Status = "XXXXXX",
|
||||
};
|
||||
|
||||
return new Models.SeparatedValue.MetadataFile
|
||||
return new Data.Models.SeparatedValue.MetadataFile
|
||||
{
|
||||
Header = header,
|
||||
Row = [disk, media, rom],
|
||||
@@ -107,7 +108,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Row
|
||||
/// </summary>
|
||||
private static void ValidateDisk(Models.SeparatedValue.Row? row)
|
||||
private static void ValidateDisk(Data.Models.SeparatedValue.Row? row)
|
||||
{
|
||||
Assert.NotNull(row);
|
||||
Assert.Equal("XXXXXX", row.FileName);
|
||||
@@ -132,7 +133,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Row
|
||||
/// </summary>
|
||||
private static void ValidateMedia(Models.SeparatedValue.Row? row)
|
||||
private static void ValidateMedia(Data.Models.SeparatedValue.Row? row)
|
||||
{
|
||||
Assert.NotNull(row);
|
||||
Assert.Equal("XXXXXX", row.FileName);
|
||||
@@ -157,7 +158,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Row
|
||||
/// </summary>
|
||||
private static void ValidateRom(Models.SeparatedValue.Row? row)
|
||||
private static void ValidateRom(Data.Models.SeparatedValue.Row? row)
|
||||
{
|
||||
Assert.NotNull(row);
|
||||
Assert.Equal("XXXXXX", row.FileName);
|
||||
@@ -179,4 +180,4 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Assert.Equal("XXXXXX", row.Status);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using SabreTools.Serialization.CrossModel;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.CrossModel
|
||||
@@ -8,17 +9,17 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
public void RoundTripTest()
|
||||
{
|
||||
// Get the cross-model serializer
|
||||
var serializer = new Serialization.CrossModel.SoftwareList();
|
||||
var serializer = new SoftwareList();
|
||||
|
||||
// Build the data
|
||||
Models.SoftwareList.SoftwareList sl = Build();
|
||||
Data.Models.SoftwareList.SoftwareList sl = Build();
|
||||
|
||||
// Serialize to generic model
|
||||
Models.Metadata.MetadataFile? metadata = serializer.Serialize(sl);
|
||||
Data.Models.Metadata.MetadataFile? metadata = serializer.Serialize(sl);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.SoftwareList.SoftwareList? newSl = serializer.Deserialize(metadata);
|
||||
Data.Models.SoftwareList.SoftwareList? newSl = serializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newSl);
|
||||
@@ -34,27 +35,27 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.SoftwareList.SoftwareList Build()
|
||||
private static Data.Models.SoftwareList.SoftwareList Build()
|
||||
{
|
||||
var info = new Models.SoftwareList.Info
|
||||
var info = new Data.Models.SoftwareList.Info
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
};
|
||||
|
||||
var sharedfeat = new Models.SoftwareList.SharedFeat
|
||||
var sharedfeat = new Data.Models.SoftwareList.SharedFeat
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
};
|
||||
|
||||
var feature = new Models.SoftwareList.Feature
|
||||
var feature = new Data.Models.SoftwareList.Feature
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
};
|
||||
|
||||
var rom = new Models.SoftwareList.Rom
|
||||
var rom = new Data.Models.SoftwareList.Rom
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Size = "XXXXXX",
|
||||
@@ -67,7 +68,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
LoadFlag = "XXXXXX",
|
||||
};
|
||||
|
||||
var dataarea = new Models.SoftwareList.DataArea
|
||||
var dataarea = new Data.Models.SoftwareList.DataArea
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Size = "XXXXXX",
|
||||
@@ -76,7 +77,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Rom = [rom],
|
||||
};
|
||||
|
||||
var disk = new Models.SoftwareList.Disk
|
||||
var disk = new Data.Models.SoftwareList.Disk
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
@@ -85,20 +86,20 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Writeable = "XXXXXX",
|
||||
};
|
||||
|
||||
var diskarea = new Models.SoftwareList.DiskArea
|
||||
var diskarea = new Data.Models.SoftwareList.DiskArea
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Disk = [disk],
|
||||
};
|
||||
|
||||
var dipvalue = new Models.SoftwareList.DipValue
|
||||
var dipvalue = new Data.Models.SoftwareList.DipValue
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var dipswitch = new Models.SoftwareList.DipSwitch
|
||||
var dipswitch = new Data.Models.SoftwareList.DipSwitch
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
@@ -106,7 +107,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
DipValue = [dipvalue],
|
||||
};
|
||||
|
||||
var part = new Models.SoftwareList.Part
|
||||
var part = new Data.Models.SoftwareList.Part
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Interface = "XXXXXX",
|
||||
@@ -116,7 +117,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
DipSwitch = [dipswitch],
|
||||
};
|
||||
|
||||
var software = new Models.SoftwareList.Software
|
||||
var software = new Data.Models.SoftwareList.Software
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
CloneOf = "XXXXXX",
|
||||
@@ -130,7 +131,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Part = [part],
|
||||
};
|
||||
|
||||
return new Models.SoftwareList.SoftwareList
|
||||
return new Data.Models.SoftwareList.SoftwareList
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Description = "XXXXXX",
|
||||
@@ -142,7 +143,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Software
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.Software? software)
|
||||
private static void Validate(Data.Models.SoftwareList.Software? software)
|
||||
{
|
||||
Assert.NotNull(software);
|
||||
Assert.Equal("XXXXXX", software.Name);
|
||||
@@ -169,7 +170,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Info
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.Info? info)
|
||||
private static void Validate(Data.Models.SoftwareList.Info? info)
|
||||
{
|
||||
Assert.NotNull(info);
|
||||
Assert.Equal("XXXXXX", info.Name);
|
||||
@@ -179,7 +180,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a SharedFeat
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.SharedFeat? sharedfeat)
|
||||
private static void Validate(Data.Models.SoftwareList.SharedFeat? sharedfeat)
|
||||
{
|
||||
Assert.NotNull(sharedfeat);
|
||||
Assert.Equal("XXXXXX", sharedfeat.Name);
|
||||
@@ -189,7 +190,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Part
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.Part? part)
|
||||
private static void Validate(Data.Models.SoftwareList.Part? part)
|
||||
{
|
||||
Assert.NotNull(part);
|
||||
Assert.Equal("XXXXXX", part.Name);
|
||||
@@ -215,7 +216,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Feature
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.Feature? feature)
|
||||
private static void Validate(Data.Models.SoftwareList.Feature? feature)
|
||||
{
|
||||
Assert.NotNull(feature);
|
||||
Assert.Equal("XXXXXX", feature.Name);
|
||||
@@ -225,7 +226,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a DataArea
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.DataArea? dataarea)
|
||||
private static void Validate(Data.Models.SoftwareList.DataArea? dataarea)
|
||||
{
|
||||
Assert.NotNull(dataarea);
|
||||
Assert.Equal("XXXXXX", dataarea.Name);
|
||||
@@ -241,7 +242,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Rom
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.Rom? rom)
|
||||
private static void Validate(Data.Models.SoftwareList.Rom? rom)
|
||||
{
|
||||
Assert.NotNull(rom);
|
||||
Assert.Equal("XXXXXX", rom.Name);
|
||||
@@ -258,7 +259,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a DiskArea
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.DiskArea? diskarea)
|
||||
private static void Validate(Data.Models.SoftwareList.DiskArea? diskarea)
|
||||
{
|
||||
Assert.NotNull(diskarea);
|
||||
Assert.Equal("XXXXXX", diskarea.Name);
|
||||
@@ -271,7 +272,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a Disk
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.Disk? disk)
|
||||
private static void Validate(Data.Models.SoftwareList.Disk? disk)
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("XXXXXX", disk.Name);
|
||||
@@ -284,7 +285,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a DipSwitch
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.DipSwitch? dipswitch)
|
||||
private static void Validate(Data.Models.SoftwareList.DipSwitch? dipswitch)
|
||||
{
|
||||
Assert.NotNull(dipswitch);
|
||||
Assert.Equal("XXXXXX", dipswitch.Name);
|
||||
@@ -299,7 +300,7 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
/// <summary>
|
||||
/// Validate a DipValue
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.DipValue? dipvalue)
|
||||
private static void Validate(Data.Models.SoftwareList.DipValue? dipvalue)
|
||||
{
|
||||
Assert.NotNull(dipvalue);
|
||||
Assert.Equal("XXXXXX", dipvalue.Name);
|
||||
@@ -307,4 +308,4 @@ namespace SabreTools.Serialization.Test.CrossModel
|
||||
Assert.Equal("XXXXXX", dipvalue.Default);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
214
SabreTools.Serialization.Test/Extensions/TypeLengthValueTests.cs
Normal file
214
SabreTools.Serialization.Test/Extensions/TypeLengthValueTests.cs
Normal file
@@ -0,0 +1,214 @@
|
||||
using System;
|
||||
using SabreTools.Data.Extensions;
|
||||
using SabreTools.Data.Models.ASN1;
|
||||
using Xunit;
|
||||
|
||||
#pragma warning disable IDE0230 // Use UTF-8 string literal
|
||||
namespace SabreTools.Serialization.Test.Extensions
|
||||
{
|
||||
public class TypeLengthValueTests
|
||||
{
|
||||
#region Formatting
|
||||
|
||||
[Fact]
|
||||
public void Format_EOC()
|
||||
{
|
||||
string expected = "Type: V_ASN1_EOC";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_EOC, Length = 0, Value = null };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_ZeroLength()
|
||||
{
|
||||
string expected = "Type: V_ASN1_NULL, Length: 0";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_NULL, Length = 0, Value = null };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_InvalidConstructed()
|
||||
{
|
||||
string expected = "Type: V_ASN1_OBJECT, V_ASN1_CONSTRUCTED, Length: 1, Value: [INVALID DATA TYPE]";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_OBJECT | ASN1Type.V_ASN1_CONSTRUCTED, Length = 1, Value = false };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_ValidConstructed()
|
||||
{
|
||||
string expected = "Type: V_ASN1_OBJECT, V_ASN1_CONSTRUCTED, Length: 3, Value:\n Type: V_ASN1_BOOLEAN, Length: 1, Value: True";
|
||||
var boolTlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_BOOLEAN, Length = 1, Value = new byte[] { 0x01 } };
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_OBJECT | ASN1Type.V_ASN1_CONSTRUCTED, Length = 3, Value = new Data.Models.ASN1.TypeLengthValue[] { boolTlv } };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_InvalidDataType()
|
||||
{
|
||||
string expected = "Type: V_ASN1_OBJECT, Length: 1, Value: [INVALID DATA TYPE]";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_OBJECT, Length = 1, Value = false };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_InvalidLength()
|
||||
{
|
||||
string expected = "Type: V_ASN1_NULL, Length: 1, Value: [NO DATA]";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_NULL, Length = 1, Value = Array.Empty<byte>() };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_InvalidBooleanLength()
|
||||
{
|
||||
string expected = "Type: V_ASN1_BOOLEAN, Length: 2 [Expected length of 1], Value: True";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_BOOLEAN, Length = 2, Value = new byte[] { 0x01 } };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_InvalidBooleanArrayLength()
|
||||
{
|
||||
string expected = "Type: V_ASN1_BOOLEAN, Length: 1 [Expected value length of 1], Value: True";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_BOOLEAN, Length = 1, Value = new byte[] { 0x01, 0x00 } };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_ValidBoolean()
|
||||
{
|
||||
string expected = "Type: V_ASN1_BOOLEAN, Length: 1, Value: True";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_BOOLEAN, Length = 1, Value = new byte[] { 0x01 } };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_ValidInteger()
|
||||
{
|
||||
string expected = "Type: V_ASN1_INTEGER, Length: 1, Value: 1";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_INTEGER, Length = 1, Value = new byte[] { 0x01 } };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_ValidBitString_NoBits()
|
||||
{
|
||||
string expected = "Type: V_ASN1_BIT_STRING, Length: 1, Value with 0 unused bits";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_BIT_STRING, Length = 1, Value = new byte[] { 0x00 } };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_ValidBitString_Bits()
|
||||
{
|
||||
string expected = "Type: V_ASN1_BIT_STRING, Length: 1, Value with 1 unused bits: 01";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_BIT_STRING, Length = 1, Value = new byte[] { 0x01, 0x01 } };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_ValidOctetString()
|
||||
{
|
||||
string expected = "Type: V_ASN1_OCTET_STRING, Length: 1, Value: 01";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_OCTET_STRING, Length = 1, Value = new byte[] { 0x01 } };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_ValidObject()
|
||||
{
|
||||
string expected = "Type: V_ASN1_OBJECT, Length: 3, Value: 0.1.2.3 (/ITU-T/1/2/3)";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_OBJECT, Length = 3, Value = new byte[] { 0x01, 0x02, 0x03 } };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_ValidUTF8String()
|
||||
{
|
||||
string expected = "Type: V_ASN1_UTF8STRING, Length: 3, Value: ABC";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_UTF8STRING, Length = 3, Value = new byte[] { 0x41, 0x42, 0x43 } };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_ValidPrintableString()
|
||||
{
|
||||
string expected = "Type: V_ASN1_PRINTABLESTRING, Length: 3, Value: ABC";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_PRINTABLESTRING, Length = 3, Value = new byte[] { 0x41, 0x42, 0x43 } };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_ValidTeletexString()
|
||||
{
|
||||
string expected = "Type: V_ASN1_TELETEXSTRING, Length: 3, Value: ABC";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_TELETEXSTRING, Length = 3, Value = new byte[] { 0x41, 0x42, 0x43 } };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_ValidIA5String()
|
||||
{
|
||||
string expected = "Type: V_ASN1_IA5STRING, Length: 3, Value: ABC";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_IA5STRING, Length = 3, Value = new byte[] { 0x41, 0x42, 0x43 } };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_InvalidUTCTime()
|
||||
{
|
||||
string expected = "Type: V_ASN1_UTCTIME, Length: 3, Value: ABC";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_UTCTIME, Length = 3, Value = new byte[] { 0x41, 0x42, 0x43 } };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_ValidUTCTime()
|
||||
{
|
||||
string expected = "Type: V_ASN1_UTCTIME, Length: 3, Value: 1980-01-01 00:00:00";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_UTCTIME, Length = 3, Value = new byte[] { 0x31, 0x39, 0x38, 0x30, 0x2D, 0x30, 0x31, 0x2D, 0x30, 0x31, 0x20, 0x30, 0x30, 0x3A, 0x30, 0x30, 0x3A, 0x30, 0x30 } };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_ValidBmpString()
|
||||
{
|
||||
string expected = "Type: V_ASN1_BMPSTRING, Length: 6, Value: ABC";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_BMPSTRING, Length = 6, Value = new byte[] { 0x41, 0x00, 0x42, 0x00, 0x43, 0x00 } };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Format_ValidUnformatted()
|
||||
{
|
||||
string expected = "Type: V_ASN1_OBJECT_DESCRIPTOR, Length: 1, Value: 01";
|
||||
var tlv = new Data.Models.ASN1.TypeLengthValue { Type = ASN1Type.V_ASN1_OBJECT_DESCRIPTOR, Length = 1, Value = new byte[] { 0x01 } };
|
||||
string actual = tlv.Format();
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
111
SabreTools.Serialization.Test/ObjectIdentifier/ParserTests.cs
Normal file
111
SabreTools.Serialization.Test/ObjectIdentifier/ParserTests.cs
Normal file
@@ -0,0 +1,111 @@
|
||||
using SabreTools.Data.ObjectIdentifier;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.ObjectIdentifier
|
||||
{
|
||||
// These tests are known to be incomplete due to the sheer number
|
||||
// of possible OIDs that exist. The tests below are a minimal
|
||||
// representation of functionality to guarantee proper behavior
|
||||
// not necessarily absolute outputs
|
||||
public class ParserTests
|
||||
{
|
||||
#region ASN.1
|
||||
|
||||
[Fact]
|
||||
public void ASN1Notation_AlwaysNull()
|
||||
{
|
||||
ulong[]? values = null;
|
||||
string? actual = Parser.ParseOIDToASN1Notation(values);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Dot Notation
|
||||
|
||||
[Fact]
|
||||
public void DotNotation_NullValues_Null()
|
||||
{
|
||||
ulong[]? values = null;
|
||||
string? actual = Parser.ParseOIDToDotNotation(values);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DotNotation_EmptyValues_Null()
|
||||
{
|
||||
ulong[]? values = [];
|
||||
string? actual = Parser.ParseOIDToDotNotation(values);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DotNotation_Values_Formatted()
|
||||
{
|
||||
string expected = "0.1.2.3";
|
||||
ulong[]? values = [0, 1, 2, 3];
|
||||
string? actual = Parser.ParseOIDToDotNotation(values);
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Modified OID-IRI
|
||||
|
||||
[Fact]
|
||||
public void ModifiedOIDIRI_NullValues_Null()
|
||||
{
|
||||
ulong[]? values = null;
|
||||
string? actual = Parser.ParseOIDToModifiedOIDIRI(values);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ModifiedOIDIRI_EmptyValues_Null()
|
||||
{
|
||||
ulong[]? values = [];
|
||||
string? actual = Parser.ParseOIDToModifiedOIDIRI(values);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ModifiedOIDIRI_Values_Formatted()
|
||||
{
|
||||
string expected = "/ITU-T/[question]/2/3";
|
||||
ulong[]? values = [0, 1, 2, 3];
|
||||
string? actual = Parser.ParseOIDToModifiedOIDIRI(values);
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region OID-IRI
|
||||
|
||||
[Fact]
|
||||
public void OIDIRI_NullValues_Null()
|
||||
{
|
||||
ulong[]? values = null;
|
||||
string? actual = Parser.ParseOIDToOIDIRINotation(values);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void OIDIRI_EmptyValues_Null()
|
||||
{
|
||||
ulong[]? values = [];
|
||||
string? actual = Parser.ParseOIDToOIDIRINotation(values);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void OIDIRI_Values_Formatted()
|
||||
{
|
||||
string expected = "/ITU-T/1/2/3";
|
||||
ulong[]? values = [0, 1, 2, 3];
|
||||
string? actual = Parser.ParseOIDToOIDIRINotation(values);
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class AACSTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,152 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Data.Models.ASN1;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class AbstractSyntaxNotationOneTests
|
||||
{
|
||||
[Fact]
|
||||
public void NullArray_Null()
|
||||
{
|
||||
byte[]? data = null;
|
||||
int offset = 0;
|
||||
var deserializer = new AbstractSyntaxNotationOne();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyArray_Null()
|
||||
{
|
||||
byte[]? data = [];
|
||||
int offset = 0;
|
||||
var deserializer = new AbstractSyntaxNotationOne();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidArray_Null()
|
||||
{
|
||||
byte[]? data = [.. Enumerable.Repeat<byte>(0xFF, 1024)];
|
||||
int offset = 0;
|
||||
var deserializer = new AbstractSyntaxNotationOne();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NullStream_Null()
|
||||
{
|
||||
Stream? data = null;
|
||||
var deserializer = new AbstractSyntaxNotationOne();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([]);
|
||||
var deserializer = new AbstractSyntaxNotationOne();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([.. Enumerable.Repeat<byte>(0xFF, 1024)]);
|
||||
var deserializer = new AbstractSyntaxNotationOne();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ValidMinimalStream_NotNull()
|
||||
{
|
||||
Stream data = new MemoryStream([0x00]);
|
||||
var deserializer = new AbstractSyntaxNotationOne();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
var actualSingle = Assert.Single(actual);
|
||||
Assert.Equal(ASN1Type.V_ASN1_EOC, actualSingle.Type);
|
||||
Assert.Equal(default, actualSingle.Length);
|
||||
Assert.Null(actualSingle.Value);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ValidBoolean_NotNull()
|
||||
{
|
||||
Stream data = new MemoryStream([0x01, 0x01, 0x01]);
|
||||
var deserializer = new AbstractSyntaxNotationOne();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
var actualSingle = Assert.Single(actual);
|
||||
Assert.Equal(ASN1Type.V_ASN1_BOOLEAN, actualSingle.Type);
|
||||
Assert.Equal(1UL, actualSingle.Length);
|
||||
Assert.NotNull(actualSingle.Value);
|
||||
|
||||
byte[]? valueAsArray = actualSingle.Value as byte[];
|
||||
Assert.NotNull(valueAsArray);
|
||||
byte actualValue = Assert.Single(valueAsArray);
|
||||
Assert.Equal(0x01, actualValue);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(new byte[] { 0x26, 0x81, 0x03, 0x01, 0x01, 0x01 })]
|
||||
[InlineData(new byte[] { 0x26, 0x82, 0x00, 0x03, 0x01, 0x01, 0x01 })]
|
||||
[InlineData(new byte[] { 0x26, 0x83, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01 })]
|
||||
[InlineData(new byte[] { 0x26, 0x84, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01 })]
|
||||
[InlineData(new byte[] { 0x26, 0x85, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01 })]
|
||||
[InlineData(new byte[] { 0x26, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01 })]
|
||||
[InlineData(new byte[] { 0x26, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01 })]
|
||||
[InlineData(new byte[] { 0x26, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01 })]
|
||||
public void ComplexValue_NotNull(byte[] arr)
|
||||
{
|
||||
Stream data = new MemoryStream(arr);
|
||||
var deserializer = new AbstractSyntaxNotationOne();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
var actualSingle = Assert.Single(actual);
|
||||
Assert.Equal(ASN1Type.V_ASN1_CONSTRUCTED | ASN1Type.V_ASN1_OBJECT, actualSingle.Type);
|
||||
Assert.Equal(3UL, actualSingle.Length);
|
||||
Assert.NotNull(actualSingle.Value);
|
||||
|
||||
TypeLengthValue[]? valueAsArray = actualSingle.Value as TypeLengthValue[];
|
||||
Assert.NotNull(valueAsArray);
|
||||
TypeLengthValue actualSub = Assert.Single(valueAsArray);
|
||||
|
||||
Assert.Equal(ASN1Type.V_ASN1_BOOLEAN, actualSub.Type);
|
||||
Assert.Equal(1UL, actualSub.Length);
|
||||
Assert.NotNull(actualSub.Value);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(new byte[] { 0x26, 0x80 })]
|
||||
[InlineData(new byte[] { 0x26, 0x89 })]
|
||||
public void ComplexValueInvalidLength_Null(byte[] arr)
|
||||
{
|
||||
Stream data = new MemoryStream(arr);
|
||||
var deserializer = new AbstractSyntaxNotationOne();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class AdvancedInstallerTests
|
||||
{
|
||||
[Fact]
|
||||
public void NullArray_Null()
|
||||
{
|
||||
byte[]? data = null;
|
||||
int offset = 0;
|
||||
var deserializer = new AdvancedInstaller();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyArray_Null()
|
||||
{
|
||||
byte[]? data = [];
|
||||
int offset = 0;
|
||||
var deserializer = new AdvancedInstaller();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidArray_Null()
|
||||
{
|
||||
byte[]? data = [.. Enumerable.Repeat<byte>(0xFF, 1024)];
|
||||
int offset = 0;
|
||||
var deserializer = new AdvancedInstaller();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NullStream_Null()
|
||||
{
|
||||
Stream? data = null;
|
||||
var deserializer = new AdvancedInstaller();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([]);
|
||||
var deserializer = new AdvancedInstaller();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([.. Enumerable.Repeat<byte>(0xFF, 1024)]);
|
||||
var deserializer = new AdvancedInstaller();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
73
SabreTools.Serialization.Test/Readers/AppPkgHeaderTests.cs
Normal file
73
SabreTools.Serialization.Test/Readers/AppPkgHeaderTests.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class AppPkgHeaderTests
|
||||
{
|
||||
[Fact]
|
||||
public void NullArray_Null()
|
||||
{
|
||||
byte[]? data = null;
|
||||
int offset = 0;
|
||||
var deserializer = new AppPkgHeader();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyArray_Null()
|
||||
{
|
||||
byte[]? data = [];
|
||||
int offset = 0;
|
||||
var deserializer = new AppPkgHeader();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidArray_Null()
|
||||
{
|
||||
byte[]? data = [.. Enumerable.Repeat<byte>(0xFF, 1024)];
|
||||
int offset = 0;
|
||||
var deserializer = new AppPkgHeader();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NullStream_Null()
|
||||
{
|
||||
Stream? data = null;
|
||||
var deserializer = new AppPkgHeader();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([]);
|
||||
var deserializer = new AppPkgHeader();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([.. Enumerable.Repeat<byte>(0xFF, 1024)]);
|
||||
var deserializer = new AppPkgHeader();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class ArchiveDotOrgTests
|
||||
{
|
||||
@@ -75,18 +74,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.ArchiveDotOrg();
|
||||
var serializer = new Serialization.Serializers.ArchiveDotOrg();
|
||||
var deserializer = new ArchiveDotOrg();
|
||||
var serializer = new Serialization.Writers.ArchiveDotOrg();
|
||||
|
||||
// Build the data
|
||||
Models.ArchiveDotOrg.Files files = Build();
|
||||
Data.Models.ArchiveDotOrg.Files files = Build();
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(files);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.ArchiveDotOrg.Files? newFiles = deserializer.Deserialize(actual);
|
||||
Data.Models.ArchiveDotOrg.Files? newFiles = deserializer.Deserialize(actual);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newFiles);
|
||||
@@ -98,9 +97,9 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.ArchiveDotOrg.Files Build()
|
||||
private static Data.Models.ArchiveDotOrg.Files Build()
|
||||
{
|
||||
var file = new Models.ArchiveDotOrg.File
|
||||
var file = new Data.Models.ArchiveDotOrg.File
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Source = "XXXXXX",
|
||||
@@ -164,7 +163,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Width = "XXXXXX",
|
||||
};
|
||||
|
||||
return new Models.ArchiveDotOrg.Files
|
||||
return new Data.Models.ArchiveDotOrg.Files
|
||||
{
|
||||
File = [file]
|
||||
};
|
||||
@@ -173,7 +172,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a File
|
||||
/// </summary>
|
||||
private static void Validate(Models.ArchiveDotOrg.File? file)
|
||||
private static void Validate(Data.Models.ArchiveDotOrg.File? file)
|
||||
{
|
||||
Assert.NotNull(file);
|
||||
Assert.Equal("XXXXXX", file.Name);
|
||||
@@ -238,4 +237,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Equal("XXXXXX", file.Width);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class AttractModeTests
|
||||
{
|
||||
@@ -75,18 +75,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripShortTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.AttractMode();
|
||||
var serializer = new Serialization.Serializers.AttractMode();
|
||||
var deserializer = new AttractMode();
|
||||
var serializer = new Serialization.Writers.AttractMode();
|
||||
|
||||
// Build the data
|
||||
Models.AttractMode.MetadataFile mf = Build();
|
||||
Data.Models.AttractMode.MetadataFile mf = Build();
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(mf, longHeader: false);
|
||||
Stream? actual = serializer.SerializeStream(mf, longHeader: false);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.AttractMode.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
Data.Models.AttractMode.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
@@ -100,18 +100,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripLongTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.AttractMode();
|
||||
var serializer = new Serialization.Serializers.AttractMode();
|
||||
var deserializer = new AttractMode();
|
||||
var serializer = new Serialization.Writers.AttractMode();
|
||||
|
||||
// Build the data
|
||||
Models.AttractMode.MetadataFile mf = Build();
|
||||
Data.Models.AttractMode.MetadataFile mf = Build();
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(mf, longHeader: true);
|
||||
Stream? actual = serializer.SerializeStream(mf, longHeader: true);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.AttractMode.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
Data.Models.AttractMode.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
@@ -124,11 +124,11 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.AttractMode.MetadataFile Build()
|
||||
private static Data.Models.AttractMode.MetadataFile Build()
|
||||
{
|
||||
string[] header = ["header"];
|
||||
|
||||
var row = new Models.AttractMode.Row
|
||||
var row = new Data.Models.AttractMode.Row
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Title = "XXXXXX",
|
||||
@@ -154,7 +154,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
FileIsAvailable = "XXXXXX",
|
||||
};
|
||||
|
||||
return new Models.AttractMode.MetadataFile
|
||||
return new Data.Models.AttractMode.MetadataFile
|
||||
{
|
||||
Header = header,
|
||||
Row = [row],
|
||||
@@ -168,15 +168,15 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
{
|
||||
Assert.NotNull(header);
|
||||
if (longHeader)
|
||||
Assert.True(Serialization.Serializers.AttractMode.HeaderArrayWithRomname.SequenceEqual(header));
|
||||
Assert.True(Serialization.Writers.AttractMode.HeaderArrayWithRomname.SequenceEqual(header));
|
||||
else
|
||||
Assert.True(Serialization.Serializers.AttractMode.HeaderArrayWithoutRomname.SequenceEqual(header));
|
||||
Assert.True(Serialization.Writers.AttractMode.HeaderArrayWithoutRomname.SequenceEqual(header));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Row
|
||||
/// </summary>
|
||||
private static void Validate(Models.AttractMode.Row? row, bool longHeader)
|
||||
private static void Validate(Data.Models.AttractMode.Row? row, bool longHeader)
|
||||
{
|
||||
Assert.NotNull(row);
|
||||
Assert.Equal("XXXXXX", row.Name);
|
||||
@@ -214,4 +214,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class BDPlusTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class BFPKTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class BSPTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class CFBTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class CHDTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class CIATests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class CatalogTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class ClrMameProTests
|
||||
{
|
||||
@@ -75,18 +74,70 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripGameTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.ClrMamePro();
|
||||
var serializer = new Serialization.Serializers.ClrMamePro();
|
||||
var deserializer = new ClrMamePro();
|
||||
var serializer = new Serialization.Writers.ClrMamePro();
|
||||
|
||||
// Build the data
|
||||
Models.ClrMamePro.MetadataFile mf = Build(game: true);
|
||||
Data.Models.ClrMamePro.MetadataFile mf = Build(game: true);
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(mf);
|
||||
Stream? actual = serializer.SerializeStream(mf);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.ClrMamePro.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
Data.Models.ClrMamePro.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
Validate(newMf.ClrMamePro);
|
||||
Assert.NotNull(newMf.Game);
|
||||
var newGame = Assert.Single(newMf.Game);
|
||||
Validate(newGame);
|
||||
Validate(newMf.Info);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RoundTripGameWithoutQuotesTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new ClrMamePro();
|
||||
var serializer = new Serialization.Writers.ClrMamePro();
|
||||
|
||||
// Build the data
|
||||
Data.Models.ClrMamePro.MetadataFile mf = Build(game: true);
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.SerializeStream(mf, quotes: false);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Data.Models.ClrMamePro.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
Validate(newMf.ClrMamePro);
|
||||
Assert.NotNull(newMf.Game);
|
||||
var newGame = Assert.Single(newMf.Game);
|
||||
Validate(newGame);
|
||||
Validate(newMf.Info);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RoundTripMachineTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new ClrMamePro();
|
||||
var serializer = new Serialization.Writers.ClrMamePro();
|
||||
|
||||
// Build the data
|
||||
Data.Models.ClrMamePro.MetadataFile mf = Build(game: false);
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.SerializeStream(mf);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Data.Models.ClrMamePro.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
@@ -97,21 +148,21 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RoundTripMachineTest()
|
||||
public void RoundTripMachineWithoutQuotesTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.ClrMamePro();
|
||||
var serializer = new Serialization.Serializers.ClrMamePro();
|
||||
var deserializer = new ClrMamePro();
|
||||
var serializer = new Serialization.Writers.ClrMamePro();
|
||||
|
||||
// Build the data
|
||||
Models.ClrMamePro.MetadataFile mf = Build(game: false);
|
||||
Data.Models.ClrMamePro.MetadataFile mf = Build(game: false);
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(mf);
|
||||
Stream? actual = serializer.SerializeStream(mf, quotes: false);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.ClrMamePro.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
Data.Models.ClrMamePro.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
@@ -124,9 +175,9 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.ClrMamePro.MetadataFile Build(bool game)
|
||||
private static Data.Models.ClrMamePro.MetadataFile Build(bool game)
|
||||
{
|
||||
var cmp = new Models.ClrMamePro.ClrMamePro
|
||||
var cmp = new Data.Models.ClrMamePro.ClrMamePro
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Description = "XXXXXX",
|
||||
@@ -145,7 +196,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
ForcePacking = "XXXXXX",
|
||||
};
|
||||
|
||||
var release = new Models.ClrMamePro.Release
|
||||
var release = new Data.Models.ClrMamePro.Release
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Region = "XXXXXX",
|
||||
@@ -154,19 +205,25 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var biosset = new Models.ClrMamePro.BiosSet
|
||||
var biosset = new Data.Models.ClrMamePro.BiosSet
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Description = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var rom = new Models.ClrMamePro.Rom
|
||||
var rom = new Data.Models.ClrMamePro.Rom
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Size = "XXXXXX",
|
||||
CRC16 = "XXXXXX",
|
||||
CRC = "XXXXXX",
|
||||
CRC64 = "XXXXXX",
|
||||
MD2 = "XXXXXX",
|
||||
MD4 = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
RIPEMD128 = "XXXXXX",
|
||||
RIPEMD160 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
Merge = "XXXXXX",
|
||||
Status = "XXXXXX",
|
||||
@@ -186,7 +243,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
MIA = "XXXXXX",
|
||||
};
|
||||
|
||||
var disk = new Models.ClrMamePro.Disk
|
||||
var disk = new Data.Models.ClrMamePro.Disk
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
@@ -196,17 +253,17 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Flags = "XXXXXX",
|
||||
};
|
||||
|
||||
var sample = new Models.ClrMamePro.Sample
|
||||
var sample = new Data.Models.ClrMamePro.Sample
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var archive = new Models.ClrMamePro.Archive
|
||||
var archive = new Data.Models.ClrMamePro.Archive
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var media = new Models.ClrMamePro.Media
|
||||
var media = new Data.Models.ClrMamePro.Media
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
@@ -215,7 +272,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
SpamSum = "XXXXXX",
|
||||
};
|
||||
|
||||
var chip = new Models.ClrMamePro.Chip
|
||||
var chip = new Data.Models.ClrMamePro.Chip
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Name = "XXXXXX",
|
||||
@@ -223,7 +280,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Clock = "XXXXXX",
|
||||
};
|
||||
|
||||
var video = new Models.ClrMamePro.Video
|
||||
var video = new Data.Models.ClrMamePro.Video
|
||||
{
|
||||
Screen = "XXXXXX",
|
||||
Orientation = "XXXXXX",
|
||||
@@ -234,12 +291,12 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Freq = "XXXXXX",
|
||||
};
|
||||
|
||||
var sound = new Models.ClrMamePro.Sound
|
||||
var sound = new Data.Models.ClrMamePro.Sound
|
||||
{
|
||||
Channels = "XXXXXX",
|
||||
};
|
||||
|
||||
var input = new Models.ClrMamePro.Input
|
||||
var input = new Data.Models.ClrMamePro.Input
|
||||
{
|
||||
Players = "XXXXXX",
|
||||
Control = "XXXXXX",
|
||||
@@ -249,14 +306,14 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Service = "XXXXXX",
|
||||
};
|
||||
|
||||
var dipswitch = new Models.ClrMamePro.DipSwitch
|
||||
var dipswitch = new Data.Models.ClrMamePro.DipSwitch
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Entry = ["XXXXXX"],
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var driver = new Models.ClrMamePro.Driver
|
||||
var driver = new Data.Models.ClrMamePro.Driver
|
||||
{
|
||||
Status = "XXXXXX",
|
||||
Color = "XXXXXX",
|
||||
@@ -266,11 +323,12 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
};
|
||||
|
||||
// TODO: This omits Set, should that have a separate case?
|
||||
Models.ClrMamePro.GameBase gameBase = game
|
||||
? new Models.ClrMamePro.Game()
|
||||
: new Models.ClrMamePro.Machine();
|
||||
Data.Models.ClrMamePro.GameBase gameBase = game
|
||||
? new Data.Models.ClrMamePro.Game()
|
||||
: new Data.Models.ClrMamePro.Machine();
|
||||
gameBase.Name = "XXXXXX";
|
||||
gameBase.Description = "XXXXXX";
|
||||
gameBase.DriverStatus = "XXXXXX";
|
||||
gameBase.Year = "XXXXXX";
|
||||
gameBase.Manufacturer = "XXXXXX";
|
||||
gameBase.Category = "XXXXXX";
|
||||
@@ -291,17 +349,23 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
gameBase.DipSwitch = [dipswitch];
|
||||
gameBase.Driver = driver;
|
||||
|
||||
return new Models.ClrMamePro.MetadataFile
|
||||
var info = new Data.Models.ClrMamePro.Info
|
||||
{
|
||||
Source = ["XXXXXX"],
|
||||
};
|
||||
|
||||
return new Data.Models.ClrMamePro.MetadataFile
|
||||
{
|
||||
ClrMamePro = cmp,
|
||||
Game = [gameBase],
|
||||
Info = info,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a ClrMamePro
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.ClrMamePro? cmp)
|
||||
private static void Validate(Data.Models.ClrMamePro.ClrMamePro? cmp)
|
||||
{
|
||||
Assert.NotNull(cmp);
|
||||
Assert.Equal("XXXXXX", cmp.Name);
|
||||
@@ -324,11 +388,12 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a GameBase
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.GameBase? gb)
|
||||
private static void Validate(Data.Models.ClrMamePro.GameBase? gb)
|
||||
{
|
||||
Assert.NotNull(gb);
|
||||
Assert.Equal("XXXXXX", gb.Name);
|
||||
Assert.Equal("XXXXXX", gb.Description);
|
||||
// Assert.Equal("XXXXXX", gb.DriverStatus); // TODO: Needs metadata mapping
|
||||
Assert.Equal("XXXXXX", gb.Year);
|
||||
Assert.Equal("XXXXXX", gb.Manufacturer);
|
||||
Assert.Equal("XXXXXX", gb.Category);
|
||||
@@ -385,7 +450,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Release
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Release? release)
|
||||
private static void Validate(Data.Models.ClrMamePro.Release? release)
|
||||
{
|
||||
Assert.NotNull(release);
|
||||
Assert.Equal("XXXXXX", release.Name);
|
||||
@@ -398,7 +463,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a BiosSet
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.BiosSet? biosset)
|
||||
private static void Validate(Data.Models.ClrMamePro.BiosSet? biosset)
|
||||
{
|
||||
Assert.NotNull(biosset);
|
||||
Assert.Equal("XXXXXX", biosset.Name);
|
||||
@@ -409,13 +474,19 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Rom
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Rom? rom)
|
||||
private static void Validate(Data.Models.ClrMamePro.Rom? rom)
|
||||
{
|
||||
Assert.NotNull(rom);
|
||||
Assert.Equal("XXXXXX", rom.Name);
|
||||
Assert.Equal("XXXXXX", rom.Size);
|
||||
Assert.Equal("XXXXXX", rom.CRC16);
|
||||
Assert.Equal("XXXXXX", rom.CRC);
|
||||
Assert.Equal("XXXXXX", rom.CRC64);
|
||||
Assert.Equal("XXXXXX", rom.MD2);
|
||||
Assert.Equal("XXXXXX", rom.MD4);
|
||||
Assert.Equal("XXXXXX", rom.MD5);
|
||||
Assert.Equal("XXXXXX", rom.RIPEMD128);
|
||||
Assert.Equal("XXXXXX", rom.RIPEMD160);
|
||||
Assert.Equal("XXXXXX", rom.SHA1);
|
||||
Assert.Equal("XXXXXX", rom.Merge);
|
||||
Assert.Equal("XXXXXX", rom.Status);
|
||||
@@ -438,7 +509,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Disk
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Disk? disk)
|
||||
private static void Validate(Data.Models.ClrMamePro.Disk? disk)
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("XXXXXX", disk.Name);
|
||||
@@ -452,7 +523,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Sample
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Sample? sample)
|
||||
private static void Validate(Data.Models.ClrMamePro.Sample? sample)
|
||||
{
|
||||
Assert.NotNull(sample);
|
||||
Assert.Equal("XXXXXX", sample.Name);
|
||||
@@ -461,7 +532,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Archive
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Archive? archive)
|
||||
private static void Validate(Data.Models.ClrMamePro.Archive? archive)
|
||||
{
|
||||
Assert.NotNull(archive);
|
||||
Assert.Equal("XXXXXX", archive.Name);
|
||||
@@ -470,7 +541,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Media
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Media? media)
|
||||
private static void Validate(Data.Models.ClrMamePro.Media? media)
|
||||
{
|
||||
Assert.NotNull(media);
|
||||
Assert.Equal("XXXXXX", media.Name);
|
||||
@@ -483,7 +554,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Chip
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Chip? chip)
|
||||
private static void Validate(Data.Models.ClrMamePro.Chip? chip)
|
||||
{
|
||||
Assert.NotNull(chip);
|
||||
Assert.Equal("XXXXXX", chip.Type);
|
||||
@@ -495,7 +566,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Video
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Video? video)
|
||||
private static void Validate(Data.Models.ClrMamePro.Video? video)
|
||||
{
|
||||
Assert.NotNull(video);
|
||||
Assert.Equal("XXXXXX", video.Screen);
|
||||
@@ -510,7 +581,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Sound
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Sound? sound)
|
||||
private static void Validate(Data.Models.ClrMamePro.Sound? sound)
|
||||
{
|
||||
Assert.NotNull(sound);
|
||||
Assert.Equal("XXXXXX", sound.Channels);
|
||||
@@ -519,7 +590,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Input
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Input? input)
|
||||
private static void Validate(Data.Models.ClrMamePro.Input? input)
|
||||
{
|
||||
Assert.NotNull(input);
|
||||
Assert.Equal("XXXXXX", input.Players);
|
||||
@@ -533,7 +604,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a DipSwitch
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.DipSwitch? dipswitch)
|
||||
private static void Validate(Data.Models.ClrMamePro.DipSwitch? dipswitch)
|
||||
{
|
||||
Assert.NotNull(dipswitch);
|
||||
Assert.Equal("XXXXXX", dipswitch.Name);
|
||||
@@ -548,7 +619,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Driver
|
||||
/// </summary>
|
||||
private static void Validate(Models.ClrMamePro.Driver? driver)
|
||||
private static void Validate(Data.Models.ClrMamePro.Driver? driver)
|
||||
{
|
||||
Assert.NotNull(driver);
|
||||
Assert.Equal("XXXXXX", driver.Status);
|
||||
@@ -557,5 +628,16 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Equal("XXXXXX", driver.PaletteSize);
|
||||
Assert.Equal("XXXXXX", driver.Blit);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a ClrMamePro
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.ClrMamePro.Info? info)
|
||||
{
|
||||
Assert.NotNull(info);
|
||||
Assert.NotNull(info.Source);
|
||||
string source = Assert.Single(info.Source);
|
||||
Assert.Equal("XXXXXX", source);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
118
SabreTools.Serialization.Test/Readers/CueSheetTests.cs
Normal file
118
SabreTools.Serialization.Test/Readers/CueSheetTests.cs
Normal file
@@ -0,0 +1,118 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class CueSheetTests
|
||||
{
|
||||
[Fact]
|
||||
public void NullArray_Null()
|
||||
{
|
||||
byte[]? data = null;
|
||||
int offset = 0;
|
||||
var deserializer = new CueSheet();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyArray_Null()
|
||||
{
|
||||
byte[]? data = [];
|
||||
int offset = 0;
|
||||
var deserializer = new CueSheet();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidArray_Null()
|
||||
{
|
||||
byte[]? data = [.. Enumerable.Repeat<byte>(0xFF, 1024)];
|
||||
int offset = 0;
|
||||
var deserializer = new CueSheet();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NullStream_Null()
|
||||
{
|
||||
Stream? data = null;
|
||||
var deserializer = new CueSheet();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([]);
|
||||
var deserializer = new CueSheet();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([.. Enumerable.Repeat<byte>(0xFF, 1024)]);
|
||||
var deserializer = new CueSheet();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
#region ReadQuotedString
|
||||
|
||||
[Fact]
|
||||
public void ReadQuotedString_EmptyReader_Throws()
|
||||
{
|
||||
byte[] data = Encoding.UTF8.GetBytes(string.Empty);
|
||||
var stream = new MemoryStream(data);
|
||||
var reader = new StreamReader(stream, Encoding.UTF8);
|
||||
Assert.Throws<ArgumentNullException>(() => CueSheet.ReadQuotedString(reader));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ReadQuotedString_NoQuotes_Correct()
|
||||
{
|
||||
byte[] data = Encoding.UTF8.GetBytes("Test1 Test2");
|
||||
var stream = new MemoryStream(data);
|
||||
var reader = new StreamReader(stream, Encoding.UTF8);
|
||||
string? actual = CueSheet.ReadQuotedString(reader);
|
||||
Assert.Equal("Test1 Test2", actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ReadQuotedString_SingleLineQuotes_Correct()
|
||||
{
|
||||
byte[] data = Encoding.UTF8.GetBytes("\"Test1 Test2\"");
|
||||
var stream = new MemoryStream(data);
|
||||
var reader = new StreamReader(stream, Encoding.UTF8);
|
||||
string? actual = CueSheet.ReadQuotedString(reader);
|
||||
Assert.Equal("\"Test1 Test2\"", actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ReadQuotedString_MultiLineQuotes_Correct()
|
||||
{
|
||||
byte[] data = Encoding.UTF8.GetBytes("\"Test1\nTest2\"");
|
||||
var stream = new MemoryStream(data);
|
||||
var reader = new StreamReader(stream, Encoding.UTF8);
|
||||
string? actual = CueSheet.ReadQuotedString(reader);
|
||||
Assert.Equal("\"Test1\nTest2\"", actual);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class DosCenterTests
|
||||
{
|
||||
@@ -75,18 +74,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.DosCenter();
|
||||
var serializer = new Serialization.Serializers.DosCenter();
|
||||
var deserializer = new DosCenter();
|
||||
var serializer = new Serialization.Writers.DosCenter();
|
||||
|
||||
// Build the data
|
||||
Models.DosCenter.MetadataFile mf = Build();
|
||||
Data.Models.DosCenter.MetadataFile mf = Build();
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(mf);
|
||||
Stream? actual = serializer.SerializeStream(mf);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.DosCenter.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
Data.Models.DosCenter.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
@@ -99,9 +98,9 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.DosCenter.MetadataFile Build()
|
||||
private static Data.Models.DosCenter.MetadataFile Build()
|
||||
{
|
||||
var dc = new Models.DosCenter.DosCenter
|
||||
var dc = new Data.Models.DosCenter.DosCenter
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Description = "XXXXXX",
|
||||
@@ -112,21 +111,22 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Comment = "XXXXXX",
|
||||
};
|
||||
|
||||
var file = new Models.DosCenter.File
|
||||
var file = new Data.Models.DosCenter.File
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Size = "XXXXXX",
|
||||
CRC = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
Date = "XXXXXX XXXXXX",
|
||||
};
|
||||
|
||||
var game = new Models.DosCenter.Game
|
||||
var game = new Data.Models.DosCenter.Game
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
File = [file],
|
||||
};
|
||||
|
||||
return new Models.DosCenter.MetadataFile
|
||||
return new Data.Models.DosCenter.MetadataFile
|
||||
{
|
||||
DosCenter = dc,
|
||||
Game = [game],
|
||||
@@ -136,7 +136,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a DosCenter
|
||||
/// </summary>
|
||||
private static void Validate(Models.DosCenter.DosCenter? cmp)
|
||||
private static void Validate(Data.Models.DosCenter.DosCenter? cmp)
|
||||
{
|
||||
Assert.NotNull(cmp);
|
||||
Assert.Equal("XXXXXX", cmp.Name);
|
||||
@@ -151,7 +151,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Game
|
||||
/// </summary>
|
||||
private static void Validate(Models.DosCenter.Game? game)
|
||||
private static void Validate(Data.Models.DosCenter.Game? game)
|
||||
{
|
||||
Assert.NotNull(game);
|
||||
Assert.Equal("XXXXXX", game.Name);
|
||||
@@ -164,13 +164,14 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a File
|
||||
/// </summary>
|
||||
private static void Validate(Models.DosCenter.File? rom)
|
||||
private static void Validate(Data.Models.DosCenter.File? rom)
|
||||
{
|
||||
Assert.NotNull(rom);
|
||||
Assert.Equal("XXXXXX", rom.Name);
|
||||
Assert.Equal("XXXXXX", rom.Size);
|
||||
Assert.Equal("XXXXXX", rom.CRC);
|
||||
Assert.Equal("XXXXXX", rom.SHA1);
|
||||
Assert.Equal("XXXXXX XXXXXX", rom.Date);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class EverdriveSMDBTests
|
||||
{
|
||||
@@ -75,18 +74,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.EverdriveSMDB();
|
||||
var serializer = new Serialization.Serializers.EverdriveSMDB();
|
||||
var deserializer = new EverdriveSMDB();
|
||||
var serializer = new Serialization.Writers.EverdriveSMDB();
|
||||
|
||||
// Build the data
|
||||
Models.EverdriveSMDB.MetadataFile mf = Build();
|
||||
Data.Models.EverdriveSMDB.MetadataFile mf = Build();
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(mf);
|
||||
Stream? actual = serializer.SerializeStream(mf);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.EverdriveSMDB.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
Data.Models.EverdriveSMDB.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
@@ -98,9 +97,9 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.EverdriveSMDB.MetadataFile Build()
|
||||
private static Data.Models.EverdriveSMDB.MetadataFile Build()
|
||||
{
|
||||
var row = new Models.EverdriveSMDB.Row
|
||||
var row = new Data.Models.EverdriveSMDB.Row
|
||||
{
|
||||
SHA256 = "XXXXXX",
|
||||
Name = "XXXXXX",
|
||||
@@ -110,7 +109,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Size = "XXXXXX",
|
||||
};
|
||||
|
||||
return new Models.EverdriveSMDB.MetadataFile
|
||||
return new Data.Models.EverdriveSMDB.MetadataFile
|
||||
{
|
||||
Row = [row],
|
||||
};
|
||||
@@ -119,7 +118,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Row
|
||||
/// </summary>
|
||||
private static void Validate(Models.EverdriveSMDB.Row? row)
|
||||
private static void Validate(Data.Models.EverdriveSMDB.Row? row)
|
||||
{
|
||||
Assert.NotNull(row);
|
||||
Assert.Equal("XXXXXX", row.SHA256);
|
||||
@@ -130,4 +129,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Equal("XXXXXX", row.Size);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class GCFTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,18 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class CueSheetTests
|
||||
public class GZipTests
|
||||
{
|
||||
[Fact]
|
||||
public void NullArray_Null()
|
||||
{
|
||||
byte[]? data = null;
|
||||
int offset = 0;
|
||||
var deserializer = new CueSheet();
|
||||
var deserializer = new GZip();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
@@ -23,7 +23,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
{
|
||||
byte[]? data = [];
|
||||
int offset = 0;
|
||||
var deserializer = new CueSheet();
|
||||
var deserializer = new GZip();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
@@ -34,7 +34,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
{
|
||||
byte[]? data = [.. Enumerable.Repeat<byte>(0xFF, 1024)];
|
||||
int offset = 0;
|
||||
var deserializer = new CueSheet();
|
||||
var deserializer = new GZip();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
@@ -44,7 +44,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void NullStream_Null()
|
||||
{
|
||||
Stream? data = null;
|
||||
var deserializer = new CueSheet();
|
||||
var deserializer = new GZip();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
@@ -54,7 +54,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void EmptyStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([]);
|
||||
var deserializer = new CueSheet();
|
||||
var deserializer = new GZip();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
@@ -64,10 +64,10 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void InvalidStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([.. Enumerable.Repeat<byte>(0xFF, 1024)]);
|
||||
var deserializer = new CueSheet();
|
||||
var deserializer = new GZip();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,10 +2,10 @@ using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Hashing;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class HashfileTests
|
||||
{
|
||||
@@ -76,18 +76,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripSFVTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.Hashfile();
|
||||
var serializer = new Serialization.Serializers.Hashfile();
|
||||
var deserializer = new Hashfile();
|
||||
var serializer = new Serialization.Writers.Hashfile();
|
||||
|
||||
// Build the data
|
||||
Models.Hashfile.Hashfile hf = Build(HashType.CRC32);
|
||||
Data.Models.Hashfile.Hashfile hf = Build(HashType.CRC32);
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(hf, HashType.CRC32);
|
||||
Stream? actual = serializer.SerializeStream(hf, HashType.CRC32);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Hashfile.Hashfile? newHf = deserializer.Deserialize(actual, HashType.CRC32);
|
||||
Data.Models.Hashfile.Hashfile? newHf = deserializer.Deserialize(actual, HashType.CRC32);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newHf);
|
||||
@@ -100,18 +100,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripMD2Test()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.Hashfile();
|
||||
var serializer = new Serialization.Serializers.Hashfile();
|
||||
var deserializer = new Hashfile();
|
||||
var serializer = new Serialization.Writers.Hashfile();
|
||||
|
||||
// Build the data
|
||||
Models.Hashfile.Hashfile hf = Build(HashType.MD2);
|
||||
Data.Models.Hashfile.Hashfile hf = Build(HashType.MD2);
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(hf, HashType.MD2);
|
||||
Stream? actual = serializer.SerializeStream(hf, HashType.MD2);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Hashfile.Hashfile? newHf = deserializer.Deserialize(actual, HashType.MD2);
|
||||
Data.Models.Hashfile.Hashfile? newHf = deserializer.Deserialize(actual, HashType.MD2);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newHf);
|
||||
@@ -124,18 +124,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripMD4Test()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.Hashfile();
|
||||
var serializer = new Serialization.Serializers.Hashfile();
|
||||
var deserializer = new Hashfile();
|
||||
var serializer = new Serialization.Writers.Hashfile();
|
||||
|
||||
// Build the data
|
||||
Models.Hashfile.Hashfile hf = Build(HashType.MD4);
|
||||
Data.Models.Hashfile.Hashfile hf = Build(HashType.MD4);
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(hf, HashType.MD4);
|
||||
Stream? actual = serializer.SerializeStream(hf, HashType.MD4);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Hashfile.Hashfile? newHf = deserializer.Deserialize(actual, HashType.MD4);
|
||||
Data.Models.Hashfile.Hashfile? newHf = deserializer.Deserialize(actual, HashType.MD4);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newHf);
|
||||
@@ -148,18 +148,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripMD5Test()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.Hashfile();
|
||||
var serializer = new Serialization.Serializers.Hashfile();
|
||||
var deserializer = new Hashfile();
|
||||
var serializer = new Serialization.Writers.Hashfile();
|
||||
|
||||
// Build the data
|
||||
Models.Hashfile.Hashfile hf = Build(HashType.MD5);
|
||||
Data.Models.Hashfile.Hashfile hf = Build(HashType.MD5);
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(hf, HashType.MD5);
|
||||
Stream? actual = serializer.SerializeStream(hf, HashType.MD5);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Hashfile.Hashfile? newHf = deserializer.Deserialize(actual, HashType.MD5);
|
||||
Data.Models.Hashfile.Hashfile? newHf = deserializer.Deserialize(actual, HashType.MD5);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newHf);
|
||||
@@ -172,18 +172,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripSHA1Test()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.Hashfile();
|
||||
var serializer = new Serialization.Serializers.Hashfile();
|
||||
var deserializer = new Hashfile();
|
||||
var serializer = new Serialization.Writers.Hashfile();
|
||||
|
||||
// Build the data
|
||||
Models.Hashfile.Hashfile hf = Build(HashType.SHA1);
|
||||
Data.Models.Hashfile.Hashfile hf = Build(HashType.SHA1);
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(hf, HashType.SHA1);
|
||||
Stream? actual = serializer.SerializeStream(hf, HashType.SHA1);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Hashfile.Hashfile? newHf = deserializer.Deserialize(actual, HashType.SHA1);
|
||||
Data.Models.Hashfile.Hashfile? newHf = deserializer.Deserialize(actual, HashType.SHA1);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newHf);
|
||||
@@ -196,18 +196,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripSHA256Test()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.Hashfile();
|
||||
var serializer = new Serialization.Serializers.Hashfile();
|
||||
var deserializer = new Hashfile();
|
||||
var serializer = new Serialization.Writers.Hashfile();
|
||||
|
||||
// Build the data
|
||||
Models.Hashfile.Hashfile hf = Build(HashType.SHA256);
|
||||
Data.Models.Hashfile.Hashfile hf = Build(HashType.SHA256);
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(hf, HashType.SHA256);
|
||||
Stream? actual = serializer.SerializeStream(hf, HashType.SHA256);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Hashfile.Hashfile? newHf = deserializer.Deserialize(actual, HashType.SHA256);
|
||||
Data.Models.Hashfile.Hashfile? newHf = deserializer.Deserialize(actual, HashType.SHA256);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newHf);
|
||||
@@ -220,18 +220,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripSHA384Test()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.Hashfile();
|
||||
var serializer = new Serialization.Serializers.Hashfile();
|
||||
var deserializer = new Hashfile();
|
||||
var serializer = new Serialization.Writers.Hashfile();
|
||||
|
||||
// Build the data
|
||||
Models.Hashfile.Hashfile hf = Build(HashType.SHA384);
|
||||
Data.Models.Hashfile.Hashfile hf = Build(HashType.SHA384);
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(hf, HashType.SHA384);
|
||||
Stream? actual = serializer.SerializeStream(hf, HashType.SHA384);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Hashfile.Hashfile? newHf = deserializer.Deserialize(actual, HashType.SHA384);
|
||||
Data.Models.Hashfile.Hashfile? newHf = deserializer.Deserialize(actual, HashType.SHA384);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newHf);
|
||||
@@ -244,18 +244,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripSHA512Test()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.Hashfile();
|
||||
var serializer = new Serialization.Serializers.Hashfile();
|
||||
var deserializer = new Hashfile();
|
||||
var serializer = new Serialization.Writers.Hashfile();
|
||||
|
||||
// Build the data
|
||||
Models.Hashfile.Hashfile hf = Build(HashType.SHA512);
|
||||
Data.Models.Hashfile.Hashfile hf = Build(HashType.SHA512);
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(hf, HashType.SHA512);
|
||||
Stream? actual = serializer.SerializeStream(hf, HashType.SHA512);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Hashfile.Hashfile? newHf = deserializer.Deserialize(actual, HashType.SHA512);
|
||||
Data.Models.Hashfile.Hashfile? newHf = deserializer.Deserialize(actual, HashType.SHA512);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newHf);
|
||||
@@ -268,18 +268,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripSpamSumTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.Hashfile();
|
||||
var serializer = new Serialization.Serializers.Hashfile();
|
||||
var deserializer = new Hashfile();
|
||||
var serializer = new Serialization.Writers.Hashfile();
|
||||
|
||||
// Build the data
|
||||
Models.Hashfile.Hashfile hf = Build(HashType.SpamSum);
|
||||
Data.Models.Hashfile.Hashfile hf = Build(HashType.SpamSum);
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(hf, HashType.SpamSum);
|
||||
Stream? actual = serializer.SerializeStream(hf, HashType.SpamSum);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Hashfile.Hashfile? newHf = deserializer.Deserialize(actual, HashType.SpamSum);
|
||||
Data.Models.Hashfile.Hashfile? newHf = deserializer.Deserialize(actual, HashType.SpamSum);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newHf);
|
||||
@@ -291,27 +291,29 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.Hashfile.Hashfile Build(HashType hashType)
|
||||
private static Data.Models.Hashfile.Hashfile Build(HashType hashType)
|
||||
{
|
||||
#pragma warning disable IDE0072
|
||||
return hashType switch
|
||||
{
|
||||
HashType.CRC32 => new Models.Hashfile.Hashfile { SFV = [new Models.Hashfile.SFV { File = "XXXXXX", Hash = "XXXXXX" }] },
|
||||
HashType.MD2 => new Models.Hashfile.Hashfile { MD2 = [new Models.Hashfile.MD2 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.MD4 => new Models.Hashfile.Hashfile { MD4 = [new Models.Hashfile.MD4 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.MD5 => new Models.Hashfile.Hashfile { MD5 = [new Models.Hashfile.MD5 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SHA1 => new Models.Hashfile.Hashfile { SHA1 = [new Models.Hashfile.SHA1 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SHA256 => new Models.Hashfile.Hashfile { SHA256 = [new Models.Hashfile.SHA256 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SHA384 => new Models.Hashfile.Hashfile { SHA384 = [new Models.Hashfile.SHA384 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SHA512 => new Models.Hashfile.Hashfile { SHA512 = [new Models.Hashfile.SHA512 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SpamSum => new Models.Hashfile.Hashfile { SpamSum = [new Models.Hashfile.SpamSum { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
_ => throw new ArgumentOutOfRangeException(),
|
||||
HashType.CRC32 => new Data.Models.Hashfile.Hashfile { SFV = [new Data.Models.Hashfile.SFV { File = "XXXXXX", Hash = "XXXXXX" }] },
|
||||
HashType.MD2 => new Data.Models.Hashfile.Hashfile { MD2 = [new Data.Models.Hashfile.MD2 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.MD4 => new Data.Models.Hashfile.Hashfile { MD4 = [new Data.Models.Hashfile.MD4 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.MD5 => new Data.Models.Hashfile.Hashfile { MD5 = [new Data.Models.Hashfile.MD5 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SHA1 => new Data.Models.Hashfile.Hashfile { SHA1 = [new Data.Models.Hashfile.SHA1 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SHA256 => new Data.Models.Hashfile.Hashfile { SHA256 = [new Data.Models.Hashfile.SHA256 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SHA384 => new Data.Models.Hashfile.Hashfile { SHA384 = [new Data.Models.Hashfile.SHA384 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SHA512 => new Data.Models.Hashfile.Hashfile { SHA512 = [new Data.Models.Hashfile.SHA512 { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
HashType.SpamSum => new Data.Models.Hashfile.Hashfile { SpamSum = [new Data.Models.Hashfile.SpamSum { Hash = "XXXXXX", File = "XXXXXX" }] },
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(hashType)),
|
||||
};
|
||||
#pragma warning restore IDE0072
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a SFV
|
||||
/// </summary>
|
||||
private static void Validate(Models.Hashfile.SFV? sfv)
|
||||
private static void Validate(Data.Models.Hashfile.SFV? sfv)
|
||||
{
|
||||
Assert.NotNull(sfv);
|
||||
Assert.Equal("XXXXXX", sfv.File);
|
||||
@@ -321,7 +323,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a MD2
|
||||
/// </summary>
|
||||
private static void Validate(Models.Hashfile.MD2? md2)
|
||||
private static void Validate(Data.Models.Hashfile.MD2? md2)
|
||||
{
|
||||
Assert.NotNull(md2);
|
||||
Assert.Equal("XXXXXX", md2.Hash);
|
||||
@@ -331,7 +333,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a MD4
|
||||
/// </summary>
|
||||
private static void Validate(Models.Hashfile.MD4? md4)
|
||||
private static void Validate(Data.Models.Hashfile.MD4? md4)
|
||||
{
|
||||
Assert.NotNull(md4);
|
||||
Assert.Equal("XXXXXX", md4.Hash);
|
||||
@@ -341,7 +343,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a MD5
|
||||
/// </summary>
|
||||
private static void Validate(Models.Hashfile.MD5? md5)
|
||||
private static void Validate(Data.Models.Hashfile.MD5? md5)
|
||||
{
|
||||
Assert.NotNull(md5);
|
||||
Assert.Equal("XXXXXX", md5.Hash);
|
||||
@@ -351,7 +353,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a SHA1
|
||||
/// </summary>
|
||||
private static void Validate(Models.Hashfile.SHA1? sha1)
|
||||
private static void Validate(Data.Models.Hashfile.SHA1? sha1)
|
||||
{
|
||||
Assert.NotNull(sha1);
|
||||
Assert.Equal("XXXXXX", sha1.Hash);
|
||||
@@ -361,7 +363,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a SHA256
|
||||
/// </summary>
|
||||
private static void Validate(Models.Hashfile.SHA256? sha256)
|
||||
private static void Validate(Data.Models.Hashfile.SHA256? sha256)
|
||||
{
|
||||
Assert.NotNull(sha256);
|
||||
Assert.Equal("XXXXXX", sha256.Hash);
|
||||
@@ -371,7 +373,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a SHA384
|
||||
/// </summary>
|
||||
private static void Validate(Models.Hashfile.SHA384? sha384)
|
||||
private static void Validate(Data.Models.Hashfile.SHA384? sha384)
|
||||
{
|
||||
Assert.NotNull(sha384);
|
||||
Assert.Equal("XXXXXX", sha384.Hash);
|
||||
@@ -381,7 +383,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a SHA512
|
||||
/// </summary>
|
||||
private static void Validate(Models.Hashfile.SHA512? sha512)
|
||||
private static void Validate(Data.Models.Hashfile.SHA512? sha512)
|
||||
{
|
||||
Assert.NotNull(sha512);
|
||||
Assert.Equal("XXXXXX", sha512.Hash);
|
||||
@@ -391,11 +393,11 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a SpamSum
|
||||
/// </summary>
|
||||
private static void Validate(Models.Hashfile.SpamSum? spamsum)
|
||||
private static void Validate(Data.Models.Hashfile.SpamSum? spamsum)
|
||||
{
|
||||
Assert.NotNull(spamsum);
|
||||
Assert.Equal("XXXXXX", spamsum.Hash);
|
||||
Assert.Equal("XXXXXX", spamsum.File);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class IRDTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
73
SabreTools.Serialization.Test/Readers/ISO9660Tests.cs
Normal file
73
SabreTools.Serialization.Test/Readers/ISO9660Tests.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class ISO9660Tests
|
||||
{
|
||||
[Fact]
|
||||
public void NullArray_Null()
|
||||
{
|
||||
byte[]? data = null;
|
||||
int offset = 0;
|
||||
var deserializer = new ISO9660();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyArray_Null()
|
||||
{
|
||||
byte[]? data = [];
|
||||
int offset = 0;
|
||||
var deserializer = new ISO9660();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidArray_Null()
|
||||
{
|
||||
byte[]? data = [.. Enumerable.Repeat<byte>(0xFF, 1024)];
|
||||
int offset = 0;
|
||||
var deserializer = new ISO9660();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NullStream_Null()
|
||||
{
|
||||
Stream? data = null;
|
||||
var deserializer = new ISO9660();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([]);
|
||||
var deserializer = new ISO9660();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([.. Enumerable.Repeat<byte>(0xFF, 1024)]);
|
||||
var deserializer = new ISO9660();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class InstallShieldArchiveV3Tests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class InstallShieldCabinetTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class InstallShieldExecutableTests
|
||||
{
|
||||
[Fact]
|
||||
public void NullArray_Null()
|
||||
{
|
||||
byte[]? data = null;
|
||||
int offset = 0;
|
||||
var deserializer = new InstallShieldExecutable();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyArray_Null()
|
||||
{
|
||||
byte[]? data = [];
|
||||
int offset = 0;
|
||||
var deserializer = new InstallShieldExecutable();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidArray_Null()
|
||||
{
|
||||
byte[]? data = [.. Enumerable.Repeat<byte>(0xFF, 1024)];
|
||||
int offset = 0;
|
||||
var deserializer = new InstallShieldExecutable();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NullStream_Null()
|
||||
{
|
||||
Stream? data = null;
|
||||
var deserializer = new InstallShieldExecutable();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([]);
|
||||
var deserializer = new InstallShieldExecutable();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([.. Enumerable.Repeat<byte>(0xFF, 1024)]);
|
||||
var deserializer = new InstallShieldExecutable();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
73
SabreTools.Serialization.Test/Readers/LZKWAJTests.cs
Normal file
73
SabreTools.Serialization.Test/Readers/LZKWAJTests.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class LZKWAJTests
|
||||
{
|
||||
[Fact]
|
||||
public void NullArray_Null()
|
||||
{
|
||||
byte[]? data = null;
|
||||
int offset = 0;
|
||||
var deserializer = new LZKWAJ();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyArray_Null()
|
||||
{
|
||||
byte[]? data = [];
|
||||
int offset = 0;
|
||||
var deserializer = new LZKWAJ();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidArray_Null()
|
||||
{
|
||||
byte[]? data = [.. Enumerable.Repeat<byte>(0xFF, 1024)];
|
||||
int offset = 0;
|
||||
var deserializer = new LZKWAJ();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NullStream_Null()
|
||||
{
|
||||
Stream? data = null;
|
||||
var deserializer = new LZKWAJ();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([]);
|
||||
var deserializer = new LZKWAJ();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([.. Enumerable.Repeat<byte>(0xFF, 1024)]);
|
||||
var deserializer = new LZKWAJ();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
74
SabreTools.Serialization.Test/Readers/LZQBasicTests.cs
Normal file
74
SabreTools.Serialization.Test/Readers/LZQBasicTests.cs
Normal file
@@ -0,0 +1,74 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class LZQBasicTests
|
||||
|
||||
{
|
||||
[Fact]
|
||||
public void NullArray_Null()
|
||||
{
|
||||
byte[]? data = null;
|
||||
int offset = 0;
|
||||
var deserializer = new LZQBasic();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyArray_Null()
|
||||
{
|
||||
byte[]? data = [];
|
||||
int offset = 0;
|
||||
var deserializer = new LZQBasic();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidArray_Null()
|
||||
{
|
||||
byte[]? data = [.. Enumerable.Repeat<byte>(0xFF, 1024)];
|
||||
int offset = 0;
|
||||
var deserializer = new LZQBasic();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NullStream_Null()
|
||||
{
|
||||
Stream? data = null;
|
||||
var deserializer = new LZQBasic();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([]);
|
||||
var deserializer = new LZQBasic();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([.. Enumerable.Repeat<byte>(0xFF, 1024)]);
|
||||
var deserializer = new LZQBasic();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
73
SabreTools.Serialization.Test/Readers/LZSZDDTests.cs
Normal file
73
SabreTools.Serialization.Test/Readers/LZSZDDTests.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class LZSZDDTests
|
||||
{
|
||||
[Fact]
|
||||
public void NullArray_Null()
|
||||
{
|
||||
byte[]? data = null;
|
||||
int offset = 0;
|
||||
var deserializer = new LZSZDD();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyArray_Null()
|
||||
{
|
||||
byte[]? data = [];
|
||||
int offset = 0;
|
||||
var deserializer = new LZSZDD();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidArray_Null()
|
||||
{
|
||||
byte[]? data = [.. Enumerable.Repeat<byte>(0xFF, 1024)];
|
||||
int offset = 0;
|
||||
var deserializer = new LZSZDD();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NullStream_Null()
|
||||
{
|
||||
Stream? data = null;
|
||||
var deserializer = new LZSZDD();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([]);
|
||||
var deserializer = new LZSZDD();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([.. Enumerable.Repeat<byte>(0xFF, 1024)]);
|
||||
var deserializer = new LZSZDD();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class LinearExecutableTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class ListromTests
|
||||
{
|
||||
@@ -75,18 +74,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.Listrom();
|
||||
var serializer = new Serialization.Serializers.Listrom();
|
||||
var deserializer = new Listrom();
|
||||
var serializer = new Serialization.Writers.Listrom();
|
||||
|
||||
// Build the data
|
||||
Models.Listrom.MetadataFile mf = Build();
|
||||
Data.Models.Listrom.MetadataFile mf = Build();
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(mf);
|
||||
Stream? actual = serializer.SerializeStream(mf);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Listrom.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
Data.Models.Listrom.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
@@ -100,9 +99,9 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.Listrom.MetadataFile Build()
|
||||
private static Data.Models.Listrom.MetadataFile Build()
|
||||
{
|
||||
var romGood = new Models.Listrom.Row
|
||||
var romGood = new Data.Models.Listrom.Row
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Size = "12345",
|
||||
@@ -112,7 +111,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
NoGoodDumpKnown = false,
|
||||
};
|
||||
|
||||
var romBad = new Models.Listrom.Row
|
||||
var romBad = new Data.Models.Listrom.Row
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Size = "12345",
|
||||
@@ -122,7 +121,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
NoGoodDumpKnown = false,
|
||||
};
|
||||
|
||||
var diskGoodMd5 = new Models.Listrom.Row
|
||||
var diskGoodMd5 = new Data.Models.Listrom.Row
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Bad = false,
|
||||
@@ -131,7 +130,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
NoGoodDumpKnown = false,
|
||||
};
|
||||
|
||||
var diskGoodSha1 = new Models.Listrom.Row
|
||||
var diskGoodSha1 = new Data.Models.Listrom.Row
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Bad = false,
|
||||
@@ -140,7 +139,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
NoGoodDumpKnown = false,
|
||||
};
|
||||
|
||||
var diskBad = new Models.Listrom.Row
|
||||
var diskBad = new Data.Models.Listrom.Row
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Bad = false,
|
||||
@@ -149,19 +148,19 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
NoGoodDumpKnown = true,
|
||||
};
|
||||
|
||||
var device = new Models.Listrom.Set()
|
||||
var device = new Data.Models.Listrom.Set()
|
||||
{
|
||||
Device = "XXXXXX",
|
||||
Row = [romGood, romBad],
|
||||
};
|
||||
|
||||
var driver = new Models.Listrom.Set()
|
||||
var driver = new Data.Models.Listrom.Set()
|
||||
{
|
||||
Driver = "XXXXXX",
|
||||
Row = [diskGoodMd5, diskGoodSha1, diskBad],
|
||||
};
|
||||
|
||||
return new Models.Listrom.MetadataFile
|
||||
return new Data.Models.Listrom.MetadataFile
|
||||
{
|
||||
Set = [device, driver],
|
||||
};
|
||||
@@ -170,7 +169,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Set
|
||||
/// </summary>
|
||||
private static void ValidateDevice(Models.Listrom.Set? set)
|
||||
private static void ValidateDevice(Data.Models.Listrom.Set? set)
|
||||
{
|
||||
Assert.NotNull(set);
|
||||
Assert.Equal("XXXXXX", set.Device);
|
||||
@@ -185,7 +184,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Set
|
||||
/// </summary>
|
||||
private static void ValidateDriver(Models.Listrom.Set? set)
|
||||
private static void ValidateDriver(Data.Models.Listrom.Set? set)
|
||||
{
|
||||
Assert.NotNull(set);
|
||||
Assert.Equal("XXXXXX", set.Driver);
|
||||
@@ -201,7 +200,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Row
|
||||
/// </summary>
|
||||
private static void ValidateGoodRom(Models.Listrom.Row? row)
|
||||
private static void ValidateGoodRom(Data.Models.Listrom.Row? row)
|
||||
{
|
||||
Assert.NotNull(row);
|
||||
Assert.Equal("XXXXXX", row.Name);
|
||||
@@ -215,7 +214,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Row
|
||||
/// </summary>
|
||||
private static void ValidateBadRom(Models.Listrom.Row? row)
|
||||
private static void ValidateBadRom(Data.Models.Listrom.Row? row)
|
||||
{
|
||||
Assert.NotNull(row);
|
||||
Assert.Equal("XXXXXX", row.Name);
|
||||
@@ -229,7 +228,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Row
|
||||
/// </summary>
|
||||
private static void ValidateGoodMd5Disk(Models.Listrom.Row? row)
|
||||
private static void ValidateGoodMd5Disk(Data.Models.Listrom.Row? row)
|
||||
{
|
||||
Assert.NotNull(row);
|
||||
Assert.Equal("XXXXXX", row.Name);
|
||||
@@ -242,7 +241,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Row
|
||||
/// </summary>
|
||||
private static void ValidateGoodSha1Disk(Models.Listrom.Row? row)
|
||||
private static void ValidateGoodSha1Disk(Data.Models.Listrom.Row? row)
|
||||
{
|
||||
Assert.NotNull(row);
|
||||
Assert.Equal("XXXXXX", row.Name);
|
||||
@@ -255,7 +254,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Row
|
||||
/// </summary>
|
||||
private static void ValidateBadDisk(Models.Listrom.Row? row)
|
||||
private static void ValidateBadDisk(Data.Models.Listrom.Row? row)
|
||||
{
|
||||
Assert.NotNull(row);
|
||||
Assert.Equal("XXXXXX", row.Name);
|
||||
@@ -265,4 +264,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.True(row.NoGoodDumpKnown);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class ListxmlTests
|
||||
{
|
||||
@@ -75,18 +74,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripGameTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.Listxml();
|
||||
var serializer = new Serialization.Serializers.Listxml();
|
||||
var deserializer = new Listxml();
|
||||
var serializer = new Serialization.Writers.Listxml();
|
||||
|
||||
// Build the data
|
||||
Models.Listxml.Mame mame = Build(game: true);
|
||||
Data.Models.Listxml.Mame mame = Build(game: true);
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(mame);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Listxml.Mame? newMame = deserializer.Deserialize(actual);
|
||||
Data.Models.Listxml.Mame? newMame = deserializer.Deserialize(actual);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMame);
|
||||
@@ -103,18 +102,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripMachineTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.Listxml();
|
||||
var serializer = new Serialization.Serializers.Listxml();
|
||||
var deserializer = new Listxml();
|
||||
var serializer = new Serialization.Writers.Listxml();
|
||||
|
||||
// Build the data
|
||||
Models.Listxml.Mame mame = Build(game: false);
|
||||
Data.Models.Listxml.Mame mame = Build(game: false);
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(mame);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Listxml.Mame? newMame = deserializer.Deserialize(actual);
|
||||
Data.Models.Listxml.Mame? newMame = deserializer.Deserialize(actual);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMame);
|
||||
@@ -130,16 +129,16 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.Listxml.Mame Build(bool game)
|
||||
private static Data.Models.Listxml.Mame Build(bool game)
|
||||
{
|
||||
var biosset = new Models.Listxml.BiosSet
|
||||
var biosset = new Data.Models.Listxml.BiosSet
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Description = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var rom = new Models.Listxml.Rom
|
||||
var rom = new Data.Models.Listxml.Rom
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Bios = "XXXXXX",
|
||||
@@ -155,7 +154,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
SoundOnly = "XXXXXX",
|
||||
};
|
||||
|
||||
var disk = new Models.Listxml.Disk
|
||||
var disk = new Data.Models.Listxml.Disk
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
@@ -168,17 +167,17 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Optional = "XXXXXX",
|
||||
};
|
||||
|
||||
var deviceref = new Models.Listxml.DeviceRef
|
||||
var deviceref = new Data.Models.Listxml.DeviceRef
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var sample = new Models.Listxml.Sample
|
||||
var sample = new Data.Models.Listxml.Sample
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var chip = new Models.Listxml.Chip
|
||||
var chip = new Data.Models.Listxml.Chip
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
@@ -187,7 +186,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Clock = "XXXXXX",
|
||||
};
|
||||
|
||||
var display = new Models.Listxml.Display
|
||||
var display = new Data.Models.Listxml.Display
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Type = "XXXXXX",
|
||||
@@ -205,7 +204,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
VBStart = "XXXXXX",
|
||||
};
|
||||
|
||||
var video = new Models.Listxml.Video
|
||||
var video = new Data.Models.Listxml.Video
|
||||
{
|
||||
Screen = "XXXXXX",
|
||||
Orientation = "XXXXXX",
|
||||
@@ -216,12 +215,12 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Refresh = "XXXXXX",
|
||||
};
|
||||
|
||||
var sound = new Models.Listxml.Sound
|
||||
var sound = new Data.Models.Listxml.Sound
|
||||
{
|
||||
Channels = "XXXXXX",
|
||||
};
|
||||
|
||||
var control = new Models.Listxml.Control
|
||||
var control = new Data.Models.Listxml.Control
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Player = "XXXXXX",
|
||||
@@ -237,7 +236,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Ways3 = "XXXXXX",
|
||||
};
|
||||
|
||||
var input = new Models.Listxml.Input
|
||||
var input = new Data.Models.Listxml.Input
|
||||
{
|
||||
Service = "XXXXXX",
|
||||
Tilt = "XXXXXX",
|
||||
@@ -248,7 +247,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Control = [control],
|
||||
};
|
||||
|
||||
var condition = new Models.Listxml.Condition
|
||||
var condition = new Data.Models.Listxml.Condition
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Mask = "XXXXXX",
|
||||
@@ -256,14 +255,14 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Value = "XXXXXX",
|
||||
};
|
||||
|
||||
var diplocation = new Models.Listxml.DipLocation
|
||||
var diplocation = new Data.Models.Listxml.DipLocation
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Number = "XXXXXX",
|
||||
Inverted = "XXXXXX",
|
||||
};
|
||||
|
||||
var dipvalue = new Models.Listxml.DipValue
|
||||
var dipvalue = new Data.Models.Listxml.DipValue
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
@@ -271,7 +270,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Condition = condition,
|
||||
};
|
||||
|
||||
var dipswitch = new Models.Listxml.DipSwitch
|
||||
var dipswitch = new Data.Models.Listxml.DipSwitch
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
@@ -281,14 +280,14 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
DipValue = [dipvalue],
|
||||
};
|
||||
|
||||
var conflocation = new Models.Listxml.ConfLocation
|
||||
var conflocation = new Data.Models.Listxml.ConfLocation
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Number = "XXXXXX",
|
||||
Inverted = "XXXXXX",
|
||||
};
|
||||
|
||||
var confsetting = new Models.Listxml.ConfSetting
|
||||
var confsetting = new Data.Models.Listxml.ConfSetting
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
@@ -296,7 +295,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Condition = condition,
|
||||
};
|
||||
|
||||
var configuration = new Models.Listxml.Configuration
|
||||
var configuration = new Data.Models.Listxml.Configuration
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
@@ -306,25 +305,25 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
ConfSetting = [confsetting],
|
||||
};
|
||||
|
||||
var analog = new Models.Listxml.Analog
|
||||
var analog = new Data.Models.Listxml.Analog
|
||||
{
|
||||
Mask = "XXXXXX",
|
||||
};
|
||||
|
||||
var port = new Models.Listxml.Port
|
||||
var port = new Data.Models.Listxml.Port
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Analog = [analog],
|
||||
};
|
||||
|
||||
var adjuster = new Models.Listxml.Adjuster
|
||||
var adjuster = new Data.Models.Listxml.Adjuster
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
Condition = condition,
|
||||
};
|
||||
|
||||
var driver = new Models.Listxml.Driver
|
||||
var driver = new Data.Models.Listxml.Driver
|
||||
{
|
||||
Status = "XXXXXX",
|
||||
Color = "XXXXXX",
|
||||
@@ -339,25 +338,25 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Incomplete = "XXXXXX",
|
||||
};
|
||||
|
||||
var feature = new Models.Listxml.Feature
|
||||
var feature = new Data.Models.Listxml.Feature
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Status = "XXXXXX",
|
||||
Overall = "XXXXXX",
|
||||
};
|
||||
|
||||
var instance = new Models.Listxml.Instance
|
||||
var instance = new Data.Models.Listxml.Instance
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
BriefName = "XXXXXX",
|
||||
};
|
||||
|
||||
var extension = new Models.Listxml.Extension
|
||||
var extension = new Data.Models.Listxml.Extension
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var device = new Models.Listxml.Device
|
||||
var device = new Data.Models.Listxml.Device
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
@@ -368,20 +367,20 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Extension = [extension],
|
||||
};
|
||||
|
||||
var slotOption = new Models.Listxml.SlotOption
|
||||
var slotOption = new Data.Models.Listxml.SlotOption
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
DevName = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var slot = new Models.Listxml.Slot
|
||||
var slot = new Data.Models.Listxml.Slot
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
SlotOption = [slotOption],
|
||||
};
|
||||
|
||||
var softwarelist = new Models.Listxml.SoftwareList
|
||||
var softwarelist = new Data.Models.Listxml.SoftwareList
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Name = "XXXXXX",
|
||||
@@ -389,16 +388,16 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Filter = "XXXXXX",
|
||||
};
|
||||
|
||||
var ramoption = new Models.Listxml.RamOption
|
||||
var ramoption = new Data.Models.Listxml.RamOption
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
Content = "XXXXXX",
|
||||
};
|
||||
|
||||
Models.Listxml.GameBase gameBase = game
|
||||
? new Models.Listxml.Game()
|
||||
: new Models.Listxml.Machine();
|
||||
Data.Models.Listxml.GameBase gameBase = game
|
||||
? new Data.Models.Listxml.Game()
|
||||
: new Data.Models.Listxml.Machine();
|
||||
gameBase.Name = "XXXXXX";
|
||||
gameBase.SourceFile = "XXXXXX";
|
||||
gameBase.IsBios = "XXXXXX";
|
||||
@@ -433,7 +432,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
gameBase.SoftwareList = [softwarelist];
|
||||
gameBase.RamOption = [ramoption];
|
||||
|
||||
return new Models.Listxml.Mame
|
||||
return new Data.Models.Listxml.Mame
|
||||
{
|
||||
Build = "XXXXXX",
|
||||
Debug = "XXXXXX",
|
||||
@@ -445,7 +444,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a GameBase
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.GameBase? gb)
|
||||
private static void Validate(Data.Models.Listxml.GameBase? gb)
|
||||
{
|
||||
Assert.NotNull(gb);
|
||||
Assert.Equal("XXXXXX", gb.Name);
|
||||
@@ -539,7 +538,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a BiosSet
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.BiosSet? biosset)
|
||||
private static void Validate(Data.Models.Listxml.BiosSet? biosset)
|
||||
{
|
||||
Assert.NotNull(biosset);
|
||||
Assert.Equal("XXXXXX", biosset.Name);
|
||||
@@ -550,7 +549,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Rom
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Rom? rom)
|
||||
private static void Validate(Data.Models.Listxml.Rom? rom)
|
||||
{
|
||||
Assert.NotNull(rom);
|
||||
Assert.Equal("XXXXXX", rom.Name);
|
||||
@@ -570,7 +569,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Disk
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Disk? disk)
|
||||
private static void Validate(Data.Models.Listxml.Disk? disk)
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("XXXXXX", disk.Name);
|
||||
@@ -587,7 +586,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a DeviceRef
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.DeviceRef? deviceref)
|
||||
private static void Validate(Data.Models.Listxml.DeviceRef? deviceref)
|
||||
{
|
||||
Assert.NotNull(deviceref);
|
||||
Assert.Equal("XXXXXX", deviceref.Name);
|
||||
@@ -596,7 +595,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Sample
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Sample? sample)
|
||||
private static void Validate(Data.Models.Listxml.Sample? sample)
|
||||
{
|
||||
Assert.NotNull(sample);
|
||||
Assert.Equal("XXXXXX", sample.Name);
|
||||
@@ -605,7 +604,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Chip
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Chip? chip)
|
||||
private static void Validate(Data.Models.Listxml.Chip? chip)
|
||||
{
|
||||
Assert.NotNull(chip);
|
||||
Assert.Equal("XXXXXX", chip.Name);
|
||||
@@ -618,7 +617,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Display
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Display? display)
|
||||
private static void Validate(Data.Models.Listxml.Display? display)
|
||||
{
|
||||
Assert.NotNull(display);
|
||||
Assert.Equal("XXXXXX", display.Tag);
|
||||
@@ -640,7 +639,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Video
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Video? video)
|
||||
private static void Validate(Data.Models.Listxml.Video? video)
|
||||
{
|
||||
Assert.NotNull(video);
|
||||
Assert.Equal("XXXXXX", video.Screen);
|
||||
@@ -655,7 +654,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Sound
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Sound? sound)
|
||||
private static void Validate(Data.Models.Listxml.Sound? sound)
|
||||
{
|
||||
Assert.NotNull(sound);
|
||||
Assert.Equal("XXXXXX", sound.Channels);
|
||||
@@ -664,7 +663,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Input
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Input? input)
|
||||
private static void Validate(Data.Models.Listxml.Input? input)
|
||||
{
|
||||
Assert.NotNull(input);
|
||||
Assert.Equal("XXXXXX", input.Service);
|
||||
@@ -682,7 +681,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Control
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Control? control)
|
||||
private static void Validate(Data.Models.Listxml.Control? control)
|
||||
{
|
||||
Assert.NotNull(control);
|
||||
Assert.Equal("XXXXXX", control.Type);
|
||||
@@ -702,7 +701,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a DipSwitch
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.DipSwitch? dipswitch)
|
||||
private static void Validate(Data.Models.Listxml.DipSwitch? dipswitch)
|
||||
{
|
||||
Assert.NotNull(dipswitch);
|
||||
Assert.Equal("XXXXXX", dipswitch.Name);
|
||||
@@ -722,7 +721,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Condition
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Condition? condition)
|
||||
private static void Validate(Data.Models.Listxml.Condition? condition)
|
||||
{
|
||||
Assert.NotNull(condition);
|
||||
Assert.Equal("XXXXXX", condition.Tag);
|
||||
@@ -734,7 +733,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a DipLocation
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.DipLocation? diplocation)
|
||||
private static void Validate(Data.Models.Listxml.DipLocation? diplocation)
|
||||
{
|
||||
Assert.NotNull(diplocation);
|
||||
Assert.Equal("XXXXXX", diplocation.Name);
|
||||
@@ -745,7 +744,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a DipValue
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.DipValue? dipvalue)
|
||||
private static void Validate(Data.Models.Listxml.DipValue? dipvalue)
|
||||
{
|
||||
Assert.NotNull(dipvalue);
|
||||
Assert.Equal("XXXXXX", dipvalue.Name);
|
||||
@@ -757,7 +756,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Configuration
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Configuration? configuration)
|
||||
private static void Validate(Data.Models.Listxml.Configuration? configuration)
|
||||
{
|
||||
Assert.NotNull(configuration);
|
||||
Assert.Equal("XXXXXX", configuration.Name);
|
||||
@@ -777,7 +776,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a ConfLocation
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.ConfLocation? conflocation)
|
||||
private static void Validate(Data.Models.Listxml.ConfLocation? conflocation)
|
||||
{
|
||||
Assert.NotNull(conflocation);
|
||||
Assert.Equal("XXXXXX", conflocation.Name);
|
||||
@@ -788,7 +787,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a ConfSetting
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.ConfSetting? confsetting)
|
||||
private static void Validate(Data.Models.Listxml.ConfSetting? confsetting)
|
||||
{
|
||||
Assert.NotNull(confsetting);
|
||||
Assert.Equal("XXXXXX", confsetting.Name);
|
||||
@@ -800,7 +799,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Port
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Port? port)
|
||||
private static void Validate(Data.Models.Listxml.Port? port)
|
||||
{
|
||||
Assert.NotNull(port);
|
||||
Assert.Equal("XXXXXX", port.Tag);
|
||||
@@ -813,7 +812,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Analog
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Analog? analog)
|
||||
private static void Validate(Data.Models.Listxml.Analog? analog)
|
||||
{
|
||||
Assert.NotNull(analog);
|
||||
Assert.Equal("XXXXXX", analog.Mask);
|
||||
@@ -822,7 +821,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Adjuster
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Adjuster? adjuster)
|
||||
private static void Validate(Data.Models.Listxml.Adjuster? adjuster)
|
||||
{
|
||||
Assert.NotNull(adjuster);
|
||||
Assert.Equal("XXXXXX", adjuster.Name);
|
||||
@@ -833,7 +832,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Driver
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Driver? driver)
|
||||
private static void Validate(Data.Models.Listxml.Driver? driver)
|
||||
{
|
||||
Assert.NotNull(driver);
|
||||
Assert.Equal("XXXXXX", driver.Status);
|
||||
@@ -852,7 +851,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Feature
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Feature? feature)
|
||||
private static void Validate(Data.Models.Listxml.Feature? feature)
|
||||
{
|
||||
Assert.NotNull(feature);
|
||||
Assert.Equal("XXXXXX", feature.Type);
|
||||
@@ -863,7 +862,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Device
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Device? device)
|
||||
private static void Validate(Data.Models.Listxml.Device? device)
|
||||
{
|
||||
Assert.NotNull(device);
|
||||
Assert.Equal("XXXXXX", device.Type);
|
||||
@@ -881,7 +880,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Instance
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Instance? instance)
|
||||
private static void Validate(Data.Models.Listxml.Instance? instance)
|
||||
{
|
||||
Assert.NotNull(instance);
|
||||
Assert.Equal("XXXXXX", instance.Name);
|
||||
@@ -891,7 +890,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Extension
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Extension? extension)
|
||||
private static void Validate(Data.Models.Listxml.Extension? extension)
|
||||
{
|
||||
Assert.NotNull(extension);
|
||||
Assert.Equal("XXXXXX", extension.Name);
|
||||
@@ -900,7 +899,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Slot
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Slot? slot)
|
||||
private static void Validate(Data.Models.Listxml.Slot? slot)
|
||||
{
|
||||
Assert.NotNull(slot);
|
||||
Assert.Equal("XXXXXX", slot.Name);
|
||||
@@ -913,7 +912,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a SlotOption
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.SlotOption? slotoption)
|
||||
private static void Validate(Data.Models.Listxml.SlotOption? slotoption)
|
||||
{
|
||||
Assert.NotNull(slotoption);
|
||||
Assert.Equal("XXXXXX", slotoption.Name);
|
||||
@@ -924,7 +923,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a SoftwareList
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.SoftwareList? softwarelist)
|
||||
private static void Validate(Data.Models.Listxml.SoftwareList? softwarelist)
|
||||
{
|
||||
Assert.NotNull(softwarelist);
|
||||
Assert.Equal("XXXXXX", softwarelist.Tag);
|
||||
@@ -936,7 +935,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a RamOption
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.RamOption? ramoption)
|
||||
private static void Validate(Data.Models.Listxml.RamOption? ramoption)
|
||||
{
|
||||
Assert.NotNull(ramoption);
|
||||
Assert.Equal("XXXXXX", ramoption.Name);
|
||||
@@ -944,4 +943,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Equal("XXXXXX", ramoption.Content);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class LogiqxTests
|
||||
{
|
||||
@@ -75,18 +74,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripGameTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.Logiqx();
|
||||
var serializer = new Serialization.Serializers.Logiqx();
|
||||
var deserializer = new Logiqx();
|
||||
var serializer = new Serialization.Writers.Logiqx();
|
||||
|
||||
// Build the data
|
||||
Models.Logiqx.Datafile df = Build(game: true);
|
||||
Data.Models.Logiqx.Datafile df = Build(game: true);
|
||||
|
||||
// Serialize to stream
|
||||
Stream? metadata = serializer.Serialize(df);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Logiqx.Datafile? newDf = deserializer.Deserialize(metadata);
|
||||
Data.Models.Logiqx.Datafile? newDf = deserializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newDf);
|
||||
@@ -107,18 +106,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripMachineTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.Logiqx();
|
||||
var serializer = new Serialization.Serializers.Logiqx();
|
||||
var deserializer = new Logiqx();
|
||||
var serializer = new Serialization.Writers.Logiqx();
|
||||
|
||||
// Build the data
|
||||
Models.Logiqx.Datafile df = Build(game: false);
|
||||
Data.Models.Logiqx.Datafile df = Build(game: false);
|
||||
|
||||
// Serialize to stream
|
||||
Stream? metadata = serializer.Serialize(df);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.Logiqx.Datafile? newDf = deserializer.Deserialize(metadata);
|
||||
Data.Models.Logiqx.Datafile? newDf = deserializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newDf);
|
||||
@@ -138,9 +137,9 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.Logiqx.Datafile Build(bool game)
|
||||
private static Data.Models.Logiqx.Datafile Build(bool game)
|
||||
{
|
||||
var clrmamepro = new Models.Logiqx.ClrMamePro
|
||||
var clrmamepro = new Data.Models.Logiqx.ClrMamePro
|
||||
{
|
||||
Header = "XXXXXX",
|
||||
ForceMerging = "XXXXXX",
|
||||
@@ -148,7 +147,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
ForcePacking = "XXXXXX",
|
||||
};
|
||||
|
||||
var romcenter = new Models.Logiqx.RomCenter
|
||||
var romcenter = new Data.Models.Logiqx.RomCenter
|
||||
{
|
||||
Plugin = "XXXXXX",
|
||||
RomMode = "XXXXXX",
|
||||
@@ -159,7 +158,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
LockSampleMode = "XXXXXX",
|
||||
};
|
||||
|
||||
var header = new Models.Logiqx.Header
|
||||
var header = new Data.Models.Logiqx.Header
|
||||
{
|
||||
Id = "XXXXXX",
|
||||
Name = "XXXXXX",
|
||||
@@ -178,7 +177,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
RomCenter = romcenter,
|
||||
};
|
||||
|
||||
var trurip = new Models.Logiqx.Trurip
|
||||
var trurip = new Data.Models.Logiqx.Trurip
|
||||
{
|
||||
TitleID = "XXXXXX",
|
||||
Publisher = "XXXXXX",
|
||||
@@ -196,7 +195,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
RelatedTo = "XXXXXX",
|
||||
};
|
||||
|
||||
var release = new Models.Logiqx.Release
|
||||
var release = new Data.Models.Logiqx.Release
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Region = "XXXXXX",
|
||||
@@ -205,19 +204,25 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var biosset = new Models.Logiqx.BiosSet
|
||||
var biosset = new Data.Models.Logiqx.BiosSet
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Description = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var rom = new Models.Logiqx.Rom
|
||||
var rom = new Data.Models.Logiqx.Rom
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Size = "XXXXXX",
|
||||
CRC16 = "XXXXXX",
|
||||
CRC = "XXXXXX",
|
||||
CRC64 = "XXXXXX",
|
||||
MD2 = "XXXXXX",
|
||||
MD4 = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
RIPEMD128 = "XXXXXX",
|
||||
RIPEMD160 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
SHA256 = "XXXXXX",
|
||||
SHA384 = "XXXXXX",
|
||||
@@ -234,7 +239,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
MIA = "XXXXXX",
|
||||
};
|
||||
|
||||
var disk = new Models.Logiqx.Disk
|
||||
var disk = new Data.Models.Logiqx.Disk
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
@@ -244,7 +249,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Region = "XXXXXX",
|
||||
};
|
||||
|
||||
var media = new Models.Logiqx.Media
|
||||
var media = new Data.Models.Logiqx.Media
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
@@ -253,22 +258,22 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
SpamSum = "XXXXXX",
|
||||
};
|
||||
|
||||
var deviceRef = new Models.Logiqx.DeviceRef
|
||||
var deviceRef = new Data.Models.Logiqx.DeviceRef
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var sample = new Models.Logiqx.Sample
|
||||
var sample = new Data.Models.Logiqx.Sample
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var archive = new Models.Logiqx.Archive
|
||||
var archive = new Data.Models.Logiqx.Archive
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var driver = new Models.Logiqx.Driver
|
||||
var driver = new Data.Models.Logiqx.Driver
|
||||
{
|
||||
Status = "XXXXXX",
|
||||
Emulation = "XXXXXX",
|
||||
@@ -280,7 +285,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Incomplete = "XXXXXX",
|
||||
};
|
||||
|
||||
var softwarelist = new Models.Logiqx.SoftwareList
|
||||
var softwarelist = new Data.Models.Logiqx.SoftwareList
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Name = "XXXXXX",
|
||||
@@ -288,9 +293,9 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Filter = "XXXXXX",
|
||||
};
|
||||
|
||||
Models.Logiqx.GameBase gameBase = game
|
||||
? new Models.Logiqx.Game()
|
||||
: new Models.Logiqx.Machine();
|
||||
Data.Models.Logiqx.GameBase gameBase = game
|
||||
? new Data.Models.Logiqx.Game()
|
||||
: new Data.Models.Logiqx.Machine();
|
||||
gameBase.Name = "XXXXXX";
|
||||
gameBase.SourceFile = "XXXXXX";
|
||||
gameBase.IsBios = "XXXXXX";
|
||||
@@ -322,7 +327,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
gameBase.Driver = driver;
|
||||
gameBase.SoftwareList = [softwarelist];
|
||||
|
||||
return new Models.Logiqx.Datafile
|
||||
return new Data.Models.Logiqx.Datafile
|
||||
{
|
||||
Build = "XXXXXX",
|
||||
Debug = "XXXXXX",
|
||||
@@ -336,7 +341,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Header
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.Header? header)
|
||||
private static void Validate(Data.Models.Logiqx.Header? header)
|
||||
{
|
||||
Assert.NotNull(header);
|
||||
Assert.Equal("XXXXXX", header.Id);
|
||||
@@ -359,7 +364,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a ClrMamePro
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.ClrMamePro? cmp)
|
||||
private static void Validate(Data.Models.Logiqx.ClrMamePro? cmp)
|
||||
{
|
||||
Assert.NotNull(cmp);
|
||||
Assert.Equal("XXXXXX", cmp.Header);
|
||||
@@ -371,7 +376,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a RomCenter
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.RomCenter? rc)
|
||||
private static void Validate(Data.Models.Logiqx.RomCenter? rc)
|
||||
{
|
||||
Assert.NotNull(rc);
|
||||
Assert.Equal("XXXXXX", rc.Plugin);
|
||||
@@ -386,7 +391,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a GameBase
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.GameBase? gb)
|
||||
private static void Validate(Data.Models.Logiqx.GameBase? gb)
|
||||
{
|
||||
Assert.NotNull(gb);
|
||||
Assert.Equal("XXXXXX", gb.Name);
|
||||
@@ -460,7 +465,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Trurip
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.Trurip? trurip)
|
||||
private static void Validate(Data.Models.Logiqx.Trurip? trurip)
|
||||
{
|
||||
Assert.NotNull(trurip);
|
||||
Assert.Equal("XXXXXX", trurip.TitleID);
|
||||
@@ -482,7 +487,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Release
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.Release? release)
|
||||
private static void Validate(Data.Models.Logiqx.Release? release)
|
||||
{
|
||||
Assert.NotNull(release);
|
||||
Assert.Equal("XXXXXX", release.Name);
|
||||
@@ -495,7 +500,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a BiosSet
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.BiosSet? biosset)
|
||||
private static void Validate(Data.Models.Logiqx.BiosSet? biosset)
|
||||
{
|
||||
Assert.NotNull(biosset);
|
||||
Assert.Equal("XXXXXX", biosset.Name);
|
||||
@@ -506,13 +511,17 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Rom
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.Rom? rom)
|
||||
private static void Validate(Data.Models.Logiqx.Rom? rom)
|
||||
{
|
||||
Assert.NotNull(rom);
|
||||
Assert.Equal("XXXXXX", rom.Name);
|
||||
Assert.Equal("XXXXXX", rom.Size);
|
||||
Assert.Equal("XXXXXX", rom.CRC);
|
||||
Assert.Equal("XXXXXX", rom.MD2);
|
||||
Assert.Equal("XXXXXX", rom.MD4);
|
||||
Assert.Equal("XXXXXX", rom.MD5);
|
||||
Assert.Equal("XXXXXX", rom.RIPEMD128);
|
||||
Assert.Equal("XXXXXX", rom.RIPEMD160);
|
||||
Assert.Equal("XXXXXX", rom.SHA1);
|
||||
Assert.Equal("XXXXXX", rom.SHA256);
|
||||
Assert.Equal("XXXXXX", rom.SHA384);
|
||||
@@ -532,7 +541,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Disk
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.Disk? disk)
|
||||
private static void Validate(Data.Models.Logiqx.Disk? disk)
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("XXXXXX", disk.Name);
|
||||
@@ -546,7 +555,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Media
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.Media? media)
|
||||
private static void Validate(Data.Models.Logiqx.Media? media)
|
||||
{
|
||||
Assert.NotNull(media);
|
||||
Assert.Equal("XXXXXX", media.Name);
|
||||
@@ -559,7 +568,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a DeviceRef
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.DeviceRef? deviceref)
|
||||
private static void Validate(Data.Models.Logiqx.DeviceRef? deviceref)
|
||||
{
|
||||
Assert.NotNull(deviceref);
|
||||
Assert.Equal("XXXXXX", deviceref.Name);
|
||||
@@ -568,7 +577,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Sample
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.Sample? sample)
|
||||
private static void Validate(Data.Models.Logiqx.Sample? sample)
|
||||
{
|
||||
Assert.NotNull(sample);
|
||||
Assert.Equal("XXXXXX", sample.Name);
|
||||
@@ -577,7 +586,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Archive
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.Archive? archive)
|
||||
private static void Validate(Data.Models.Logiqx.Archive? archive)
|
||||
{
|
||||
Assert.NotNull(archive);
|
||||
Assert.Equal("XXXXXX", archive.Name);
|
||||
@@ -586,7 +595,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Driver
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.Driver? driver)
|
||||
private static void Validate(Data.Models.Logiqx.Driver? driver)
|
||||
{
|
||||
Assert.NotNull(driver);
|
||||
Assert.Equal("XXXXXX", driver.Status);
|
||||
@@ -602,7 +611,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a SoftwareList
|
||||
/// </summary>
|
||||
private static void Validate(Models.Logiqx.SoftwareList? softwarelist)
|
||||
private static void Validate(Data.Models.Logiqx.SoftwareList? softwarelist)
|
||||
{
|
||||
Assert.NotNull(softwarelist);
|
||||
Assert.Equal("XXXXXX", softwarelist.Tag);
|
||||
@@ -611,4 +620,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Equal("XXXXXX", softwarelist.Filter);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class M1Tests
|
||||
{
|
||||
@@ -74,18 +74,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripGameTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.M1();
|
||||
var serializer = new Serialization.Serializers.M1();
|
||||
var deserializer = new M1();
|
||||
var serializer = new Serialization.Writers.M1();
|
||||
|
||||
// Build the data
|
||||
Models.Listxml.M1 m1 = Build(game: true);
|
||||
Data.Models.Listxml.M1 m1 = Build(game: true);
|
||||
|
||||
// Serialize to generic model
|
||||
Stream? metadata = serializer.Serialize(m1);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize to stream
|
||||
Models.Listxml.M1? newM1 = deserializer.Deserialize(metadata);
|
||||
Data.Models.Listxml.M1? newM1 = deserializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newM1);
|
||||
@@ -100,18 +100,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripMachineTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.M1();
|
||||
var serializer = new Serialization.Serializers.M1();
|
||||
var deserializer = new M1();
|
||||
var serializer = new Serialization.Writers.M1();
|
||||
|
||||
// Build the data
|
||||
Models.Listxml.M1 m1 = Build(game: false);
|
||||
Data.Models.Listxml.M1 m1 = Build(game: false);
|
||||
|
||||
// Serialize to generic model
|
||||
Stream? metadata = serializer.Serialize(m1);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize to stream
|
||||
Models.Listxml.M1? newM1 = deserializer.Deserialize(metadata);
|
||||
Data.Models.Listxml.M1? newM1 = deserializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newM1);
|
||||
@@ -125,16 +125,16 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.Listxml.M1 Build(bool game)
|
||||
private static Data.Models.Listxml.M1 Build(bool game)
|
||||
{
|
||||
var biosset = new Models.Listxml.BiosSet
|
||||
var biosset = new Data.Models.Listxml.BiosSet
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Description = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var rom = new Models.Listxml.Rom
|
||||
var rom = new Data.Models.Listxml.Rom
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Bios = "XXXXXX",
|
||||
@@ -150,7 +150,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
SoundOnly = "XXXXXX",
|
||||
};
|
||||
|
||||
var disk = new Models.Listxml.Disk
|
||||
var disk = new Data.Models.Listxml.Disk
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
@@ -163,17 +163,17 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Optional = "XXXXXX",
|
||||
};
|
||||
|
||||
var deviceref = new Models.Listxml.DeviceRef
|
||||
var deviceref = new Data.Models.Listxml.DeviceRef
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var sample = new Models.Listxml.Sample
|
||||
var sample = new Data.Models.Listxml.Sample
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var chip = new Models.Listxml.Chip
|
||||
var chip = new Data.Models.Listxml.Chip
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
@@ -182,7 +182,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Clock = "XXXXXX",
|
||||
};
|
||||
|
||||
var display = new Models.Listxml.Display
|
||||
var display = new Data.Models.Listxml.Display
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Type = "XXXXXX",
|
||||
@@ -200,7 +200,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
VBStart = "XXXXXX",
|
||||
};
|
||||
|
||||
var video = new Models.Listxml.Video
|
||||
var video = new Data.Models.Listxml.Video
|
||||
{
|
||||
Screen = "XXXXXX",
|
||||
Orientation = "XXXXXX",
|
||||
@@ -211,12 +211,12 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Refresh = "XXXXXX",
|
||||
};
|
||||
|
||||
var sound = new Models.Listxml.Sound
|
||||
var sound = new Data.Models.Listxml.Sound
|
||||
{
|
||||
Channels = "XXXXXX",
|
||||
};
|
||||
|
||||
var control = new Models.Listxml.Control
|
||||
var control = new Data.Models.Listxml.Control
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Player = "XXXXXX",
|
||||
@@ -232,7 +232,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Ways3 = "XXXXXX",
|
||||
};
|
||||
|
||||
var input = new Models.Listxml.Input
|
||||
var input = new Data.Models.Listxml.Input
|
||||
{
|
||||
Service = "XXXXXX",
|
||||
Tilt = "XXXXXX",
|
||||
@@ -243,7 +243,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Control = [control],
|
||||
};
|
||||
|
||||
var condition = new Models.Listxml.Condition
|
||||
var condition = new Data.Models.Listxml.Condition
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Mask = "XXXXXX",
|
||||
@@ -251,14 +251,14 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Value = "XXXXXX",
|
||||
};
|
||||
|
||||
var diplocation = new Models.Listxml.DipLocation
|
||||
var diplocation = new Data.Models.Listxml.DipLocation
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Number = "XXXXXX",
|
||||
Inverted = "XXXXXX",
|
||||
};
|
||||
|
||||
var dipvalue = new Models.Listxml.DipValue
|
||||
var dipvalue = new Data.Models.Listxml.DipValue
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
@@ -266,7 +266,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Condition = condition,
|
||||
};
|
||||
|
||||
var dipswitch = new Models.Listxml.DipSwitch
|
||||
var dipswitch = new Data.Models.Listxml.DipSwitch
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
@@ -276,14 +276,14 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
DipValue = [dipvalue],
|
||||
};
|
||||
|
||||
var conflocation = new Models.Listxml.ConfLocation
|
||||
var conflocation = new Data.Models.Listxml.ConfLocation
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Number = "XXXXXX",
|
||||
Inverted = "XXXXXX",
|
||||
};
|
||||
|
||||
var confsetting = new Models.Listxml.ConfSetting
|
||||
var confsetting = new Data.Models.Listxml.ConfSetting
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
@@ -291,7 +291,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Condition = condition,
|
||||
};
|
||||
|
||||
var configuration = new Models.Listxml.Configuration
|
||||
var configuration = new Data.Models.Listxml.Configuration
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
@@ -301,25 +301,25 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
ConfSetting = [confsetting],
|
||||
};
|
||||
|
||||
var analog = new Models.Listxml.Analog
|
||||
var analog = new Data.Models.Listxml.Analog
|
||||
{
|
||||
Mask = "XXXXXX",
|
||||
};
|
||||
|
||||
var port = new Models.Listxml.Port
|
||||
var port = new Data.Models.Listxml.Port
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Analog = [analog],
|
||||
};
|
||||
|
||||
var adjuster = new Models.Listxml.Adjuster
|
||||
var adjuster = new Data.Models.Listxml.Adjuster
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
Condition = condition,
|
||||
};
|
||||
|
||||
var driver = new Models.Listxml.Driver
|
||||
var driver = new Data.Models.Listxml.Driver
|
||||
{
|
||||
Status = "XXXXXX",
|
||||
Color = "XXXXXX",
|
||||
@@ -334,25 +334,25 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Incomplete = "XXXXXX",
|
||||
};
|
||||
|
||||
var feature = new Models.Listxml.Feature
|
||||
var feature = new Data.Models.Listxml.Feature
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Status = "XXXXXX",
|
||||
Overall = "XXXXXX",
|
||||
};
|
||||
|
||||
var instance = new Models.Listxml.Instance
|
||||
var instance = new Data.Models.Listxml.Instance
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
BriefName = "XXXXXX",
|
||||
};
|
||||
|
||||
var extension = new Models.Listxml.Extension
|
||||
var extension = new Data.Models.Listxml.Extension
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var device = new Models.Listxml.Device
|
||||
var device = new Data.Models.Listxml.Device
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
@@ -363,20 +363,20 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Extension = [extension],
|
||||
};
|
||||
|
||||
var slotOption = new Models.Listxml.SlotOption
|
||||
var slotOption = new Data.Models.Listxml.SlotOption
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
DevName = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var slot = new Models.Listxml.Slot
|
||||
var slot = new Data.Models.Listxml.Slot
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
SlotOption = [slotOption],
|
||||
};
|
||||
|
||||
var softwarelist = new Models.Listxml.SoftwareList
|
||||
var softwarelist = new Data.Models.Listxml.SoftwareList
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Name = "XXXXXX",
|
||||
@@ -384,16 +384,16 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Filter = "XXXXXX",
|
||||
};
|
||||
|
||||
var ramoption = new Models.Listxml.RamOption
|
||||
var ramoption = new Data.Models.Listxml.RamOption
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
Content = "XXXXXX",
|
||||
};
|
||||
|
||||
Models.Listxml.GameBase gameBase = game
|
||||
? new Models.Listxml.Game()
|
||||
: new Models.Listxml.Machine();
|
||||
Data.Models.Listxml.GameBase gameBase = game
|
||||
? new Data.Models.Listxml.Game()
|
||||
: new Data.Models.Listxml.Machine();
|
||||
gameBase.Name = "XXXXXX";
|
||||
gameBase.SourceFile = "XXXXXX";
|
||||
gameBase.IsBios = "XXXXXX";
|
||||
@@ -428,7 +428,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
gameBase.SoftwareList = [softwarelist];
|
||||
gameBase.RamOption = [ramoption];
|
||||
|
||||
return new Models.Listxml.M1
|
||||
return new Data.Models.Listxml.M1
|
||||
{
|
||||
Version = "XXXXXX",
|
||||
Game = [gameBase],
|
||||
@@ -438,7 +438,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a GameBase
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.GameBase? gb)
|
||||
private static void Validate(Data.Models.Listxml.GameBase? gb)
|
||||
{
|
||||
Assert.NotNull(gb);
|
||||
Assert.Equal("XXXXXX", gb.Name);
|
||||
@@ -532,7 +532,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a BiosSet
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.BiosSet? biosset)
|
||||
private static void Validate(Data.Models.Listxml.BiosSet? biosset)
|
||||
{
|
||||
Assert.NotNull(biosset);
|
||||
Assert.Equal("XXXXXX", biosset.Name);
|
||||
@@ -543,7 +543,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Rom
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Rom? rom)
|
||||
private static void Validate(Data.Models.Listxml.Rom? rom)
|
||||
{
|
||||
Assert.NotNull(rom);
|
||||
Assert.Equal("XXXXXX", rom.Name);
|
||||
@@ -563,7 +563,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Disk
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Disk? disk)
|
||||
private static void Validate(Data.Models.Listxml.Disk? disk)
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("XXXXXX", disk.Name);
|
||||
@@ -580,7 +580,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a DeviceRef
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.DeviceRef? deviceref)
|
||||
private static void Validate(Data.Models.Listxml.DeviceRef? deviceref)
|
||||
{
|
||||
Assert.NotNull(deviceref);
|
||||
Assert.Equal("XXXXXX", deviceref.Name);
|
||||
@@ -589,7 +589,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Sample
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Sample? sample)
|
||||
private static void Validate(Data.Models.Listxml.Sample? sample)
|
||||
{
|
||||
Assert.NotNull(sample);
|
||||
Assert.Equal("XXXXXX", sample.Name);
|
||||
@@ -598,7 +598,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Chip
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Chip? chip)
|
||||
private static void Validate(Data.Models.Listxml.Chip? chip)
|
||||
{
|
||||
Assert.NotNull(chip);
|
||||
Assert.Equal("XXXXXX", chip.Name);
|
||||
@@ -611,7 +611,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Display
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Display? display)
|
||||
private static void Validate(Data.Models.Listxml.Display? display)
|
||||
{
|
||||
Assert.NotNull(display);
|
||||
Assert.Equal("XXXXXX", display.Tag);
|
||||
@@ -633,7 +633,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Video
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Video? video)
|
||||
private static void Validate(Data.Models.Listxml.Video? video)
|
||||
{
|
||||
Assert.NotNull(video);
|
||||
Assert.Equal("XXXXXX", video.Screen);
|
||||
@@ -648,7 +648,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Sound
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Sound? sound)
|
||||
private static void Validate(Data.Models.Listxml.Sound? sound)
|
||||
{
|
||||
Assert.NotNull(sound);
|
||||
Assert.Equal("XXXXXX", sound.Channels);
|
||||
@@ -657,7 +657,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Input
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Input? input)
|
||||
private static void Validate(Data.Models.Listxml.Input? input)
|
||||
{
|
||||
Assert.NotNull(input);
|
||||
Assert.Equal("XXXXXX", input.Service);
|
||||
@@ -675,7 +675,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Control
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Control? control)
|
||||
private static void Validate(Data.Models.Listxml.Control? control)
|
||||
{
|
||||
Assert.NotNull(control);
|
||||
Assert.Equal("XXXXXX", control.Type);
|
||||
@@ -695,7 +695,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a DipSwitch
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.DipSwitch? dipswitch)
|
||||
private static void Validate(Data.Models.Listxml.DipSwitch? dipswitch)
|
||||
{
|
||||
Assert.NotNull(dipswitch);
|
||||
Assert.Equal("XXXXXX", dipswitch.Name);
|
||||
@@ -715,7 +715,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Condition
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Condition? condition)
|
||||
private static void Validate(Data.Models.Listxml.Condition? condition)
|
||||
{
|
||||
Assert.NotNull(condition);
|
||||
Assert.Equal("XXXXXX", condition.Tag);
|
||||
@@ -727,7 +727,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a DipLocation
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.DipLocation? diplocation)
|
||||
private static void Validate(Data.Models.Listxml.DipLocation? diplocation)
|
||||
{
|
||||
Assert.NotNull(diplocation);
|
||||
Assert.Equal("XXXXXX", diplocation.Name);
|
||||
@@ -738,7 +738,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a DipValue
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.DipValue? dipvalue)
|
||||
private static void Validate(Data.Models.Listxml.DipValue? dipvalue)
|
||||
{
|
||||
Assert.NotNull(dipvalue);
|
||||
Assert.Equal("XXXXXX", dipvalue.Name);
|
||||
@@ -750,7 +750,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Configuration
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Configuration? configuration)
|
||||
private static void Validate(Data.Models.Listxml.Configuration? configuration)
|
||||
{
|
||||
Assert.NotNull(configuration);
|
||||
Assert.Equal("XXXXXX", configuration.Name);
|
||||
@@ -770,7 +770,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a ConfLocation
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.ConfLocation? conflocation)
|
||||
private static void Validate(Data.Models.Listxml.ConfLocation? conflocation)
|
||||
{
|
||||
Assert.NotNull(conflocation);
|
||||
Assert.Equal("XXXXXX", conflocation.Name);
|
||||
@@ -781,7 +781,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a ConfSetting
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.ConfSetting? confsetting)
|
||||
private static void Validate(Data.Models.Listxml.ConfSetting? confsetting)
|
||||
{
|
||||
Assert.NotNull(confsetting);
|
||||
Assert.Equal("XXXXXX", confsetting.Name);
|
||||
@@ -793,7 +793,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Port
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Port? port)
|
||||
private static void Validate(Data.Models.Listxml.Port? port)
|
||||
{
|
||||
Assert.NotNull(port);
|
||||
Assert.Equal("XXXXXX", port.Tag);
|
||||
@@ -806,7 +806,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Analog
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Analog? analog)
|
||||
private static void Validate(Data.Models.Listxml.Analog? analog)
|
||||
{
|
||||
Assert.NotNull(analog);
|
||||
Assert.Equal("XXXXXX", analog.Mask);
|
||||
@@ -815,7 +815,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Adjuster
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Adjuster? adjuster)
|
||||
private static void Validate(Data.Models.Listxml.Adjuster? adjuster)
|
||||
{
|
||||
Assert.NotNull(adjuster);
|
||||
Assert.Equal("XXXXXX", adjuster.Name);
|
||||
@@ -826,7 +826,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Driver
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Driver? driver)
|
||||
private static void Validate(Data.Models.Listxml.Driver? driver)
|
||||
{
|
||||
Assert.NotNull(driver);
|
||||
Assert.Equal("XXXXXX", driver.Status);
|
||||
@@ -845,7 +845,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Feature
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Feature? feature)
|
||||
private static void Validate(Data.Models.Listxml.Feature? feature)
|
||||
{
|
||||
Assert.NotNull(feature);
|
||||
Assert.Equal("XXXXXX", feature.Type);
|
||||
@@ -856,7 +856,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Device
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Device? device)
|
||||
private static void Validate(Data.Models.Listxml.Device? device)
|
||||
{
|
||||
Assert.NotNull(device);
|
||||
Assert.Equal("XXXXXX", device.Type);
|
||||
@@ -874,7 +874,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Instance
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Instance? instance)
|
||||
private static void Validate(Data.Models.Listxml.Instance? instance)
|
||||
{
|
||||
Assert.NotNull(instance);
|
||||
Assert.Equal("XXXXXX", instance.Name);
|
||||
@@ -884,7 +884,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Extension
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Extension? extension)
|
||||
private static void Validate(Data.Models.Listxml.Extension? extension)
|
||||
{
|
||||
Assert.NotNull(extension);
|
||||
Assert.Equal("XXXXXX", extension.Name);
|
||||
@@ -893,7 +893,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Slot
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.Slot? slot)
|
||||
private static void Validate(Data.Models.Listxml.Slot? slot)
|
||||
{
|
||||
Assert.NotNull(slot);
|
||||
Assert.Equal("XXXXXX", slot.Name);
|
||||
@@ -906,7 +906,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a SlotOption
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.SlotOption? slotoption)
|
||||
private static void Validate(Data.Models.Listxml.SlotOption? slotoption)
|
||||
{
|
||||
Assert.NotNull(slotoption);
|
||||
Assert.Equal("XXXXXX", slotoption.Name);
|
||||
@@ -917,7 +917,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a SoftwareList
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.SoftwareList? softwarelist)
|
||||
private static void Validate(Data.Models.Listxml.SoftwareList? softwarelist)
|
||||
{
|
||||
Assert.NotNull(softwarelist);
|
||||
Assert.Equal("XXXXXX", softwarelist.Tag);
|
||||
@@ -929,7 +929,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a RamOption
|
||||
/// </summary>
|
||||
private static void Validate(Models.Listxml.RamOption? ramoption)
|
||||
private static void Validate(Data.Models.Listxml.RamOption? ramoption)
|
||||
{
|
||||
Assert.NotNull(ramoption);
|
||||
Assert.Equal("XXXXXX", ramoption.Name);
|
||||
@@ -937,4 +937,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Equal("XXXXXX", ramoption.Content);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class MSDOSTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
940
SabreTools.Serialization.Test/Readers/MessTests.cs
Normal file
940
SabreTools.Serialization.Test/Readers/MessTests.cs
Normal file
@@ -0,0 +1,940 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class MessTests
|
||||
{
|
||||
[Fact]
|
||||
public void NullArray_Null()
|
||||
{
|
||||
byte[]? data = null;
|
||||
int offset = 0;
|
||||
var deserializer = new Mess();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyArray_Null()
|
||||
{
|
||||
byte[]? data = [];
|
||||
int offset = 0;
|
||||
var deserializer = new Mess();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidArray_Null()
|
||||
{
|
||||
byte[]? data = [.. Enumerable.Repeat<byte>(0xFF, 1024)];
|
||||
int offset = 0;
|
||||
var deserializer = new Mess();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NullStream_Null()
|
||||
{
|
||||
Stream? data = null;
|
||||
var deserializer = new Mess();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([]);
|
||||
var deserializer = new Mess();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([.. Enumerable.Repeat<byte>(0xFF, 1024)]);
|
||||
var deserializer = new Mess();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RoundTripGameTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Mess();
|
||||
var serializer = new Serialization.Writers.Mess();
|
||||
|
||||
// Build the data
|
||||
Data.Models.Listxml.Mess m1 = Build(game: true);
|
||||
|
||||
// Serialize to generic model
|
||||
Stream? metadata = serializer.Serialize(m1);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize to stream
|
||||
Data.Models.Listxml.Mess? newMess = deserializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMess);
|
||||
Assert.Equal("XXXXXX", newMess.Version);
|
||||
|
||||
Assert.NotNull(newMess.Game);
|
||||
var newGame = Assert.Single(newMess.Game);
|
||||
Validate(newGame);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RoundTripMachineTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Mess();
|
||||
var serializer = new Serialization.Writers.Mess();
|
||||
|
||||
// Build the data
|
||||
Data.Models.Listxml.Mess m1 = Build(game: false);
|
||||
|
||||
// Serialize to generic model
|
||||
Stream? metadata = serializer.Serialize(m1);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize to stream
|
||||
Data.Models.Listxml.Mess? newMess = deserializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMess);
|
||||
Assert.Equal("XXXXXX", newMess.Version);
|
||||
|
||||
Assert.NotNull(newMess.Game);
|
||||
var newGame = Assert.Single(newMess.Game);
|
||||
Validate(newGame);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Data.Models.Listxml.Mess Build(bool game)
|
||||
{
|
||||
var biosset = new Data.Models.Listxml.BiosSet
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Description = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var rom = new Data.Models.Listxml.Rom
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Bios = "XXXXXX",
|
||||
Size = "XXXXXX",
|
||||
CRC = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
Merge = "XXXXXX",
|
||||
Region = "XXXXXX",
|
||||
Offset = "XXXXXX",
|
||||
Status = "XXXXXX",
|
||||
Optional = "XXXXXX",
|
||||
Dispose = "XXXXXX",
|
||||
SoundOnly = "XXXXXX",
|
||||
};
|
||||
|
||||
var disk = new Data.Models.Listxml.Disk
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
Merge = "XXXXXX",
|
||||
Region = "XXXXXX",
|
||||
Index = "XXXXXX",
|
||||
Writable = "XXXXXX",
|
||||
Status = "XXXXXX",
|
||||
Optional = "XXXXXX",
|
||||
};
|
||||
|
||||
var deviceref = new Data.Models.Listxml.DeviceRef
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var sample = new Data.Models.Listxml.Sample
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var chip = new Data.Models.Listxml.Chip
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
Type = "XXXXXX",
|
||||
SoundOnly = "XXXXXX",
|
||||
Clock = "XXXXXX",
|
||||
};
|
||||
|
||||
var display = new Data.Models.Listxml.Display
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Type = "XXXXXX",
|
||||
Rotate = "XXXXXX",
|
||||
FlipX = "XXXXXX",
|
||||
Width = "XXXXXX",
|
||||
Height = "XXXXXX",
|
||||
Refresh = "XXXXXX",
|
||||
PixClock = "XXXXXX",
|
||||
HTotal = "XXXXXX",
|
||||
HBEnd = "XXXXXX",
|
||||
HBStart = "XXXXXX",
|
||||
VTotal = "XXXXXX",
|
||||
VBEnd = "XXXXXX",
|
||||
VBStart = "XXXXXX",
|
||||
};
|
||||
|
||||
var video = new Data.Models.Listxml.Video
|
||||
{
|
||||
Screen = "XXXXXX",
|
||||
Orientation = "XXXXXX",
|
||||
Width = "XXXXXX",
|
||||
Height = "XXXXXX",
|
||||
AspectX = "XXXXXX",
|
||||
AspectY = "XXXXXX",
|
||||
Refresh = "XXXXXX",
|
||||
};
|
||||
|
||||
var sound = new Data.Models.Listxml.Sound
|
||||
{
|
||||
Channels = "XXXXXX",
|
||||
};
|
||||
|
||||
var control = new Data.Models.Listxml.Control
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Player = "XXXXXX",
|
||||
Buttons = "XXXXXX",
|
||||
ReqButtons = "XXXXXX",
|
||||
Minimum = "XXXXXX",
|
||||
Maximum = "XXXXXX",
|
||||
Sensitivity = "XXXXXX",
|
||||
KeyDelta = "XXXXXX",
|
||||
Reverse = "XXXXXX",
|
||||
Ways = "XXXXXX",
|
||||
Ways2 = "XXXXXX",
|
||||
Ways3 = "XXXXXX",
|
||||
};
|
||||
|
||||
var input = new Data.Models.Listxml.Input
|
||||
{
|
||||
Service = "XXXXXX",
|
||||
Tilt = "XXXXXX",
|
||||
Players = "XXXXXX",
|
||||
//ControlAttr = "XXXXXX", // Mututally exclusive with input.Control
|
||||
Buttons = "XXXXXX",
|
||||
Coins = "XXXXXX",
|
||||
Control = [control],
|
||||
};
|
||||
|
||||
var condition = new Data.Models.Listxml.Condition
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Mask = "XXXXXX",
|
||||
Relation = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
};
|
||||
|
||||
var diplocation = new Data.Models.Listxml.DipLocation
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Number = "XXXXXX",
|
||||
Inverted = "XXXXXX",
|
||||
};
|
||||
|
||||
var dipvalue = new Data.Models.Listxml.DipValue
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
Condition = condition,
|
||||
};
|
||||
|
||||
var dipswitch = new Data.Models.Listxml.DipSwitch
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
Mask = "XXXXXX",
|
||||
Condition = condition,
|
||||
DipLocation = [diplocation],
|
||||
DipValue = [dipvalue],
|
||||
};
|
||||
|
||||
var conflocation = new Data.Models.Listxml.ConfLocation
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Number = "XXXXXX",
|
||||
Inverted = "XXXXXX",
|
||||
};
|
||||
|
||||
var confsetting = new Data.Models.Listxml.ConfSetting
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
Condition = condition,
|
||||
};
|
||||
|
||||
var configuration = new Data.Models.Listxml.Configuration
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
Mask = "XXXXXX",
|
||||
Condition = condition,
|
||||
ConfLocation = [conflocation],
|
||||
ConfSetting = [confsetting],
|
||||
};
|
||||
|
||||
var analog = new Data.Models.Listxml.Analog
|
||||
{
|
||||
Mask = "XXXXXX",
|
||||
};
|
||||
|
||||
var port = new Data.Models.Listxml.Port
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Analog = [analog],
|
||||
};
|
||||
|
||||
var adjuster = new Data.Models.Listxml.Adjuster
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
Condition = condition,
|
||||
};
|
||||
|
||||
var driver = new Data.Models.Listxml.Driver
|
||||
{
|
||||
Status = "XXXXXX",
|
||||
Color = "XXXXXX",
|
||||
Sound = "XXXXXX",
|
||||
PaletteSize = "XXXXXX",
|
||||
Emulation = "XXXXXX",
|
||||
Cocktail = "XXXXXX",
|
||||
SaveState = "XXXXXX",
|
||||
RequiresArtwork = "XXXXXX",
|
||||
Unofficial = "XXXXXX",
|
||||
NoSoundHardware = "XXXXXX",
|
||||
Incomplete = "XXXXXX",
|
||||
};
|
||||
|
||||
var feature = new Data.Models.Listxml.Feature
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Status = "XXXXXX",
|
||||
Overall = "XXXXXX",
|
||||
};
|
||||
|
||||
var instance = new Data.Models.Listxml.Instance
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
BriefName = "XXXXXX",
|
||||
};
|
||||
|
||||
var extension = new Data.Models.Listxml.Extension
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
};
|
||||
|
||||
var device = new Data.Models.Listxml.Device
|
||||
{
|
||||
Type = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
FixedImage = "XXXXXX",
|
||||
Mandatory = "XXXXXX",
|
||||
Interface = "XXXXXX",
|
||||
Instance = instance,
|
||||
Extension = [extension],
|
||||
};
|
||||
|
||||
var slotOption = new Data.Models.Listxml.SlotOption
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
DevName = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var slot = new Data.Models.Listxml.Slot
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
SlotOption = [slotOption],
|
||||
};
|
||||
|
||||
var softwarelist = new Data.Models.Listxml.SoftwareList
|
||||
{
|
||||
Tag = "XXXXXX",
|
||||
Name = "XXXXXX",
|
||||
Status = "XXXXXX",
|
||||
Filter = "XXXXXX",
|
||||
};
|
||||
|
||||
var ramoption = new Data.Models.Listxml.RamOption
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
Content = "XXXXXX",
|
||||
};
|
||||
|
||||
Data.Models.Listxml.GameBase gameBase = game
|
||||
? new Data.Models.Listxml.Game()
|
||||
: new Data.Models.Listxml.Machine();
|
||||
gameBase.Name = "XXXXXX";
|
||||
gameBase.SourceFile = "XXXXXX";
|
||||
gameBase.IsBios = "XXXXXX";
|
||||
gameBase.IsDevice = "XXXXXX";
|
||||
gameBase.IsMechanical = "XXXXXX";
|
||||
gameBase.Runnable = "XXXXXX";
|
||||
gameBase.CloneOf = "XXXXXX";
|
||||
gameBase.RomOf = "XXXXXX";
|
||||
gameBase.SampleOf = "XXXXXX";
|
||||
gameBase.Description = "XXXXXX";
|
||||
gameBase.Year = "XXXXXX";
|
||||
gameBase.Manufacturer = "XXXXXX";
|
||||
gameBase.History = "XXXXXX";
|
||||
gameBase.BiosSet = [biosset];
|
||||
gameBase.Rom = [rom];
|
||||
gameBase.Disk = [disk];
|
||||
gameBase.DeviceRef = [deviceref];
|
||||
gameBase.Sample = [sample];
|
||||
gameBase.Chip = [chip];
|
||||
gameBase.Display = [display];
|
||||
gameBase.Video = [video];
|
||||
gameBase.Sound = sound;
|
||||
gameBase.Input = input;
|
||||
gameBase.DipSwitch = [dipswitch];
|
||||
gameBase.Configuration = [configuration];
|
||||
gameBase.Port = [port];
|
||||
gameBase.Adjuster = [adjuster];
|
||||
gameBase.Driver = driver;
|
||||
gameBase.Feature = [feature];
|
||||
gameBase.Device = [device];
|
||||
gameBase.Slot = [slot];
|
||||
gameBase.SoftwareList = [softwarelist];
|
||||
gameBase.RamOption = [ramoption];
|
||||
|
||||
return new Data.Models.Listxml.Mess
|
||||
{
|
||||
Version = "XXXXXX",
|
||||
Game = [gameBase],
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a GameBase
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.GameBase? gb)
|
||||
{
|
||||
Assert.NotNull(gb);
|
||||
Assert.Equal("XXXXXX", gb.Name);
|
||||
Assert.Equal("XXXXXX", gb.SourceFile);
|
||||
Assert.Equal("XXXXXX", gb.IsBios);
|
||||
Assert.Equal("XXXXXX", gb.IsDevice);
|
||||
Assert.Equal("XXXXXX", gb.IsMechanical);
|
||||
Assert.Equal("XXXXXX", gb.Runnable);
|
||||
Assert.Equal("XXXXXX", gb.CloneOf);
|
||||
Assert.Equal("XXXXXX", gb.RomOf);
|
||||
Assert.Equal("XXXXXX", gb.SampleOf);
|
||||
Assert.Equal("XXXXXX", gb.Description);
|
||||
Assert.Equal("XXXXXX", gb.Year);
|
||||
Assert.Equal("XXXXXX", gb.Manufacturer);
|
||||
Assert.Equal("XXXXXX", gb.History);
|
||||
|
||||
Assert.NotNull(gb.BiosSet);
|
||||
var biosset = Assert.Single(gb.BiosSet);
|
||||
Validate(biosset);
|
||||
|
||||
Assert.NotNull(gb.Rom);
|
||||
var rom = Assert.Single(gb.Rom);
|
||||
Validate(rom);
|
||||
|
||||
Assert.NotNull(gb.Disk);
|
||||
var disk = Assert.Single(gb.Disk);
|
||||
Validate(disk);
|
||||
|
||||
Assert.NotNull(gb.DeviceRef);
|
||||
var deviceref = Assert.Single(gb.DeviceRef);
|
||||
Validate(deviceref);
|
||||
|
||||
Assert.NotNull(gb.Sample);
|
||||
var sample = Assert.Single(gb.Sample);
|
||||
Validate(sample);
|
||||
|
||||
Assert.NotNull(gb.Chip);
|
||||
var chip = Assert.Single(gb.Chip);
|
||||
Validate(chip);
|
||||
|
||||
Assert.NotNull(gb.Display);
|
||||
var display = Assert.Single(gb.Display);
|
||||
Validate(display);
|
||||
|
||||
Assert.NotNull(gb.Video);
|
||||
var video = Assert.Single(gb.Video);
|
||||
Validate(video);
|
||||
|
||||
Validate(gb.Sound);
|
||||
Validate(gb.Input);
|
||||
|
||||
Assert.NotNull(gb.DipSwitch);
|
||||
var dipswitch = Assert.Single(gb.DipSwitch);
|
||||
Validate(dipswitch);
|
||||
|
||||
Assert.NotNull(gb.Configuration);
|
||||
var configuration = Assert.Single(gb.Configuration);
|
||||
Validate(configuration);
|
||||
|
||||
Assert.NotNull(gb.Port);
|
||||
var port = Assert.Single(gb.Port);
|
||||
Validate(port);
|
||||
|
||||
Assert.NotNull(gb.Adjuster);
|
||||
var adjuster = Assert.Single(gb.Adjuster);
|
||||
Validate(adjuster);
|
||||
|
||||
Validate(gb.Driver);
|
||||
|
||||
Assert.NotNull(gb.Feature);
|
||||
var feature = Assert.Single(gb.Feature);
|
||||
Validate(feature);
|
||||
|
||||
Assert.NotNull(gb.Device);
|
||||
var device = Assert.Single(gb.Device);
|
||||
Validate(device);
|
||||
|
||||
Assert.NotNull(gb.Slot);
|
||||
var slot = Assert.Single(gb.Slot);
|
||||
Validate(slot);
|
||||
|
||||
Assert.NotNull(gb.SoftwareList);
|
||||
var softwarelist = Assert.Single(gb.SoftwareList);
|
||||
Validate(softwarelist);
|
||||
|
||||
Assert.NotNull(gb.RamOption);
|
||||
var ramoption = Assert.Single(gb.RamOption);
|
||||
Validate(ramoption);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a BiosSet
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.BiosSet? biosset)
|
||||
{
|
||||
Assert.NotNull(biosset);
|
||||
Assert.Equal("XXXXXX", biosset.Name);
|
||||
Assert.Equal("XXXXXX", biosset.Description);
|
||||
Assert.Equal("XXXXXX", biosset.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Rom
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Rom? rom)
|
||||
{
|
||||
Assert.NotNull(rom);
|
||||
Assert.Equal("XXXXXX", rom.Name);
|
||||
Assert.Equal("XXXXXX", rom.Bios);
|
||||
Assert.Equal("XXXXXX", rom.Size);
|
||||
Assert.Equal("XXXXXX", rom.CRC);
|
||||
Assert.Equal("XXXXXX", rom.SHA1);
|
||||
Assert.Equal("XXXXXX", rom.Merge);
|
||||
Assert.Equal("XXXXXX", rom.Region);
|
||||
Assert.Equal("XXXXXX", rom.Offset);
|
||||
Assert.Equal("XXXXXX", rom.Status);
|
||||
Assert.Equal("XXXXXX", rom.Optional);
|
||||
Assert.Equal("XXXXXX", rom.Dispose);
|
||||
Assert.Equal("XXXXXX", rom.SoundOnly);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Disk
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Disk? disk)
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("XXXXXX", disk.Name);
|
||||
Assert.Equal("XXXXXX", disk.MD5);
|
||||
Assert.Equal("XXXXXX", disk.SHA1);
|
||||
Assert.Equal("XXXXXX", disk.Merge);
|
||||
Assert.Equal("XXXXXX", disk.Region);
|
||||
Assert.Equal("XXXXXX", disk.Index);
|
||||
Assert.Equal("XXXXXX", disk.Writable);
|
||||
Assert.Equal("XXXXXX", disk.Status);
|
||||
Assert.Equal("XXXXXX", disk.Optional);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a DeviceRef
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.DeviceRef? deviceref)
|
||||
{
|
||||
Assert.NotNull(deviceref);
|
||||
Assert.Equal("XXXXXX", deviceref.Name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Sample
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Sample? sample)
|
||||
{
|
||||
Assert.NotNull(sample);
|
||||
Assert.Equal("XXXXXX", sample.Name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Chip
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Chip? chip)
|
||||
{
|
||||
Assert.NotNull(chip);
|
||||
Assert.Equal("XXXXXX", chip.Name);
|
||||
Assert.Equal("XXXXXX", chip.Tag);
|
||||
Assert.Equal("XXXXXX", chip.Type);
|
||||
Assert.Equal("XXXXXX", chip.SoundOnly);
|
||||
Assert.Equal("XXXXXX", chip.Clock);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Display
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Display? display)
|
||||
{
|
||||
Assert.NotNull(display);
|
||||
Assert.Equal("XXXXXX", display.Tag);
|
||||
Assert.Equal("XXXXXX", display.Type);
|
||||
Assert.Equal("XXXXXX", display.Rotate);
|
||||
Assert.Equal("XXXXXX", display.FlipX);
|
||||
Assert.Equal("XXXXXX", display.Width);
|
||||
Assert.Equal("XXXXXX", display.Height);
|
||||
Assert.Equal("XXXXXX", display.Refresh);
|
||||
Assert.Equal("XXXXXX", display.PixClock);
|
||||
Assert.Equal("XXXXXX", display.HTotal);
|
||||
Assert.Equal("XXXXXX", display.HBEnd);
|
||||
Assert.Equal("XXXXXX", display.HBStart);
|
||||
Assert.Equal("XXXXXX", display.VTotal);
|
||||
Assert.Equal("XXXXXX", display.VBEnd);
|
||||
Assert.Equal("XXXXXX", display.VBStart);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Video
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Video? video)
|
||||
{
|
||||
Assert.NotNull(video);
|
||||
Assert.Equal("XXXXXX", video.Screen);
|
||||
Assert.Equal("XXXXXX", video.Orientation);
|
||||
Assert.Equal("XXXXXX", video.Width);
|
||||
Assert.Equal("XXXXXX", video.Height);
|
||||
Assert.Equal("XXXXXX", video.AspectX);
|
||||
Assert.Equal("XXXXXX", video.AspectY);
|
||||
Assert.Equal("XXXXXX", video.Refresh);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Sound
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Sound? sound)
|
||||
{
|
||||
Assert.NotNull(sound);
|
||||
Assert.Equal("XXXXXX", sound.Channels);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Input
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Input? input)
|
||||
{
|
||||
Assert.NotNull(input);
|
||||
Assert.Equal("XXXXXX", input.Service);
|
||||
Assert.Equal("XXXXXX", input.Tilt);
|
||||
Assert.Equal("XXXXXX", input.Players);
|
||||
//Assert.Equal("XXXXXX", input.ControlAttr); // Mututally exclusive with input.Control
|
||||
Assert.Equal("XXXXXX", input.Buttons);
|
||||
Assert.Equal("XXXXXX", input.Coins);
|
||||
|
||||
Assert.NotNull(input.Control);
|
||||
var control = Assert.Single(input.Control);
|
||||
Validate(control);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Control
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Control? control)
|
||||
{
|
||||
Assert.NotNull(control);
|
||||
Assert.Equal("XXXXXX", control.Type);
|
||||
Assert.Equal("XXXXXX", control.Player);
|
||||
Assert.Equal("XXXXXX", control.Buttons);
|
||||
Assert.Equal("XXXXXX", control.ReqButtons);
|
||||
Assert.Equal("XXXXXX", control.Minimum);
|
||||
Assert.Equal("XXXXXX", control.Maximum);
|
||||
Assert.Equal("XXXXXX", control.Sensitivity);
|
||||
Assert.Equal("XXXXXX", control.KeyDelta);
|
||||
Assert.Equal("XXXXXX", control.Reverse);
|
||||
Assert.Equal("XXXXXX", control.Ways);
|
||||
Assert.Equal("XXXXXX", control.Ways2);
|
||||
Assert.Equal("XXXXXX", control.Ways3);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a DipSwitch
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.DipSwitch? dipswitch)
|
||||
{
|
||||
Assert.NotNull(dipswitch);
|
||||
Assert.Equal("XXXXXX", dipswitch.Name);
|
||||
Assert.Equal("XXXXXX", dipswitch.Tag);
|
||||
Assert.Equal("XXXXXX", dipswitch.Mask);
|
||||
Validate(dipswitch.Condition);
|
||||
|
||||
Assert.NotNull(dipswitch.DipLocation);
|
||||
var diplocation = Assert.Single(dipswitch.DipLocation);
|
||||
Validate(diplocation);
|
||||
|
||||
Assert.NotNull(dipswitch.DipValue);
|
||||
var dipvalue = Assert.Single(dipswitch.DipValue);
|
||||
Validate(dipvalue);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Condition
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Condition? condition)
|
||||
{
|
||||
Assert.NotNull(condition);
|
||||
Assert.Equal("XXXXXX", condition.Tag);
|
||||
Assert.Equal("XXXXXX", condition.Mask);
|
||||
Assert.Equal("XXXXXX", condition.Relation);
|
||||
Assert.Equal("XXXXXX", condition.Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a DipLocation
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.DipLocation? diplocation)
|
||||
{
|
||||
Assert.NotNull(diplocation);
|
||||
Assert.Equal("XXXXXX", diplocation.Name);
|
||||
Assert.Equal("XXXXXX", diplocation.Number);
|
||||
Assert.Equal("XXXXXX", diplocation.Inverted);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a DipValue
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.DipValue? dipvalue)
|
||||
{
|
||||
Assert.NotNull(dipvalue);
|
||||
Assert.Equal("XXXXXX", dipvalue.Name);
|
||||
Assert.Equal("XXXXXX", dipvalue.Value);
|
||||
Assert.Equal("XXXXXX", dipvalue.Default);
|
||||
Validate(dipvalue.Condition);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Configuration
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Configuration? configuration)
|
||||
{
|
||||
Assert.NotNull(configuration);
|
||||
Assert.Equal("XXXXXX", configuration.Name);
|
||||
Assert.Equal("XXXXXX", configuration.Tag);
|
||||
Assert.Equal("XXXXXX", configuration.Mask);
|
||||
Validate(configuration.Condition);
|
||||
|
||||
Assert.NotNull(configuration.ConfLocation);
|
||||
var conflocation = Assert.Single(configuration.ConfLocation);
|
||||
Validate(conflocation);
|
||||
|
||||
Assert.NotNull(configuration.ConfSetting);
|
||||
var confsetting = Assert.Single(configuration.ConfSetting);
|
||||
Validate(confsetting);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a ConfLocation
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.ConfLocation? conflocation)
|
||||
{
|
||||
Assert.NotNull(conflocation);
|
||||
Assert.Equal("XXXXXX", conflocation.Name);
|
||||
Assert.Equal("XXXXXX", conflocation.Number);
|
||||
Assert.Equal("XXXXXX", conflocation.Inverted);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a ConfSetting
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.ConfSetting? confsetting)
|
||||
{
|
||||
Assert.NotNull(confsetting);
|
||||
Assert.Equal("XXXXXX", confsetting.Name);
|
||||
Assert.Equal("XXXXXX", confsetting.Value);
|
||||
Assert.Equal("XXXXXX", confsetting.Default);
|
||||
Validate(confsetting.Condition);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Port
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Port? port)
|
||||
{
|
||||
Assert.NotNull(port);
|
||||
Assert.Equal("XXXXXX", port.Tag);
|
||||
|
||||
Assert.NotNull(port.Analog);
|
||||
var analog = Assert.Single(port.Analog);
|
||||
Validate(analog);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Analog
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Analog? analog)
|
||||
{
|
||||
Assert.NotNull(analog);
|
||||
Assert.Equal("XXXXXX", analog.Mask);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Adjuster
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Adjuster? adjuster)
|
||||
{
|
||||
Assert.NotNull(adjuster);
|
||||
Assert.Equal("XXXXXX", adjuster.Name);
|
||||
Assert.Equal("XXXXXX", adjuster.Default);
|
||||
Validate(adjuster.Condition);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Driver
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Driver? driver)
|
||||
{
|
||||
Assert.NotNull(driver);
|
||||
Assert.Equal("XXXXXX", driver.Status);
|
||||
Assert.Equal("XXXXXX", driver.Color);
|
||||
Assert.Equal("XXXXXX", driver.Sound);
|
||||
Assert.Equal("XXXXXX", driver.PaletteSize);
|
||||
Assert.Equal("XXXXXX", driver.Emulation);
|
||||
Assert.Equal("XXXXXX", driver.Cocktail);
|
||||
Assert.Equal("XXXXXX", driver.SaveState);
|
||||
Assert.Equal("XXXXXX", driver.RequiresArtwork);
|
||||
Assert.Equal("XXXXXX", driver.Unofficial);
|
||||
Assert.Equal("XXXXXX", driver.NoSoundHardware);
|
||||
Assert.Equal("XXXXXX", driver.Incomplete);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Feature
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Feature? feature)
|
||||
{
|
||||
Assert.NotNull(feature);
|
||||
Assert.Equal("XXXXXX", feature.Type);
|
||||
Assert.Equal("XXXXXX", feature.Status);
|
||||
Assert.Equal("XXXXXX", feature.Overall);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Device
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Device? device)
|
||||
{
|
||||
Assert.NotNull(device);
|
||||
Assert.Equal("XXXXXX", device.Type);
|
||||
Assert.Equal("XXXXXX", device.Tag);
|
||||
Assert.Equal("XXXXXX", device.FixedImage);
|
||||
Assert.Equal("XXXXXX", device.Mandatory);
|
||||
Assert.Equal("XXXXXX", device.Interface);
|
||||
Validate(device.Instance);
|
||||
|
||||
Assert.NotNull(device.Extension);
|
||||
var extension = Assert.Single(device.Extension);
|
||||
Validate(extension);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Instance
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Instance? instance)
|
||||
{
|
||||
Assert.NotNull(instance);
|
||||
Assert.Equal("XXXXXX", instance.Name);
|
||||
Assert.Equal("XXXXXX", instance.BriefName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Extension
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Extension? extension)
|
||||
{
|
||||
Assert.NotNull(extension);
|
||||
Assert.Equal("XXXXXX", extension.Name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Slot
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.Slot? slot)
|
||||
{
|
||||
Assert.NotNull(slot);
|
||||
Assert.Equal("XXXXXX", slot.Name);
|
||||
|
||||
Assert.NotNull(slot.SlotOption);
|
||||
var slotoption = Assert.Single(slot.SlotOption);
|
||||
Validate(slotoption);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a SlotOption
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.SlotOption? slotoption)
|
||||
{
|
||||
Assert.NotNull(slotoption);
|
||||
Assert.Equal("XXXXXX", slotoption.Name);
|
||||
Assert.Equal("XXXXXX", slotoption.DevName);
|
||||
Assert.Equal("XXXXXX", slotoption.Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a SoftwareList
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.SoftwareList? softwarelist)
|
||||
{
|
||||
Assert.NotNull(softwarelist);
|
||||
Assert.Equal("XXXXXX", softwarelist.Tag);
|
||||
Assert.Equal("XXXXXX", softwarelist.Name);
|
||||
Assert.Equal("XXXXXX", softwarelist.Status);
|
||||
Assert.Equal("XXXXXX", softwarelist.Filter);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a RamOption
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Listxml.RamOption? ramoption)
|
||||
{
|
||||
Assert.NotNull(ramoption);
|
||||
Assert.Equal("XXXXXX", ramoption.Name);
|
||||
Assert.Equal("XXXXXX", ramoption.Default);
|
||||
Assert.Equal("XXXXXX", ramoption.Content);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class MicrosoftCabinetTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class MoPaQTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class N3DSTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class NCFTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class NewExecutableTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class NitroTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class OfflineListTests
|
||||
{
|
||||
@@ -75,18 +74,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.OfflineList();
|
||||
var serializer = new Serialization.Serializers.OfflineList();
|
||||
var deserializer = new OfflineList();
|
||||
var serializer = new Serialization.Writers.OfflineList();
|
||||
|
||||
// Build the data
|
||||
Models.OfflineList.Dat dat = Build();
|
||||
Data.Models.OfflineList.Dat dat = Build();
|
||||
|
||||
// Serialize to stream
|
||||
Stream? metadata = serializer.Serialize(dat);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.OfflineList.Dat? newDat = deserializer.Deserialize(metadata);
|
||||
Data.Models.OfflineList.Dat? newDat = deserializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newDat);
|
||||
@@ -99,89 +98,89 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.OfflineList.Dat Build()
|
||||
private static Data.Models.OfflineList.Dat Build()
|
||||
{
|
||||
var infos = new Models.OfflineList.Infos
|
||||
var infos = new Data.Models.OfflineList.Infos
|
||||
{
|
||||
Title = new Models.OfflineList.Title
|
||||
Title = new Data.Models.OfflineList.Title
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
Location = new Models.OfflineList.Location
|
||||
Location = new Data.Models.OfflineList.Location
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
Publisher = new Models.OfflineList.Publisher
|
||||
Publisher = new Data.Models.OfflineList.Publisher
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
SourceRom = new Models.OfflineList.SourceRom
|
||||
SourceRom = new Data.Models.OfflineList.SourceRom
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
SaveType = new Models.OfflineList.SaveType
|
||||
SaveType = new Data.Models.OfflineList.SaveType
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
RomSize = new Models.OfflineList.RomSize
|
||||
RomSize = new Data.Models.OfflineList.RomSize
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
ReleaseNumber = new Models.OfflineList.ReleaseNumber
|
||||
ReleaseNumber = new Data.Models.OfflineList.ReleaseNumber
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
ImageNumber = new Models.OfflineList.ImageNumber
|
||||
ImageNumber = new Data.Models.OfflineList.ImageNumber
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
LanguageNumber = new Models.OfflineList.LanguageNumber
|
||||
LanguageNumber = new Data.Models.OfflineList.LanguageNumber
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
Comment = new Models.OfflineList.Comment
|
||||
Comment = new Data.Models.OfflineList.Comment
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
RomCRC = new Models.OfflineList.RomCRC
|
||||
RomCRC = new Data.Models.OfflineList.RomCRC
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
Im1CRC = new Models.OfflineList.Im1CRC
|
||||
Im1CRC = new Data.Models.OfflineList.Im1CRC
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
Im2CRC = new Models.OfflineList.Im2CRC
|
||||
Im2CRC = new Data.Models.OfflineList.Im2CRC
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
},
|
||||
Languages = new Models.OfflineList.Languages
|
||||
Languages = new Data.Models.OfflineList.Languages
|
||||
{
|
||||
Visible = "XXXXXX",
|
||||
InNamingOption = "XXXXXX",
|
||||
@@ -189,32 +188,32 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
},
|
||||
};
|
||||
|
||||
var canopen = new Models.OfflineList.CanOpen
|
||||
var canopen = new Data.Models.OfflineList.CanOpen
|
||||
{
|
||||
Extension = ["XXXXXX"],
|
||||
};
|
||||
|
||||
var daturl = new Models.OfflineList.DatUrl
|
||||
var daturl = new Data.Models.OfflineList.DatUrl
|
||||
{
|
||||
FileName = "XXXXXX",
|
||||
Content = "XXXXXX",
|
||||
};
|
||||
|
||||
var newdat = new Models.OfflineList.NewDat
|
||||
var newdat = new Data.Models.OfflineList.NewDat
|
||||
{
|
||||
DatVersionUrl = "XXXXXX",
|
||||
DatUrl = daturl,
|
||||
ImUrl = "XXXXXX",
|
||||
};
|
||||
|
||||
var find = new Models.OfflineList.Find
|
||||
var find = new Data.Models.OfflineList.Find
|
||||
{
|
||||
Operation = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
Content = "XXXXXX",
|
||||
};
|
||||
|
||||
var to = new Models.OfflineList.To
|
||||
var to = new Data.Models.OfflineList.To
|
||||
{
|
||||
Value = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
@@ -222,12 +221,12 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Find = [find],
|
||||
};
|
||||
|
||||
var search = new Models.OfflineList.Search
|
||||
var search = new Data.Models.OfflineList.Search
|
||||
{
|
||||
To = [to],
|
||||
};
|
||||
|
||||
var configuration = new Models.OfflineList.Configuration
|
||||
var configuration = new Data.Models.OfflineList.Configuration
|
||||
{
|
||||
DatName = "XXXXXX",
|
||||
ImFolder = "XXXXXX",
|
||||
@@ -242,18 +241,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
RomTitle = "XXXXXX",
|
||||
};
|
||||
|
||||
var fileromcrc = new Models.OfflineList.FileRomCRC
|
||||
var fileromcrc = new Data.Models.OfflineList.FileRomCRC
|
||||
{
|
||||
Extension = "XXXXXX",
|
||||
Content = "XXXXXX",
|
||||
};
|
||||
|
||||
var files = new Models.OfflineList.Files
|
||||
var files = new Data.Models.OfflineList.Files
|
||||
{
|
||||
RomCRC = [fileromcrc],
|
||||
};
|
||||
|
||||
var game = new Models.OfflineList.Game
|
||||
var game = new Data.Models.OfflineList.Game
|
||||
{
|
||||
ImageNumber = "XXXXXX",
|
||||
ReleaseNumber = "XXXXXX",
|
||||
@@ -271,12 +270,12 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
DuplicateID = "XXXXXX",
|
||||
};
|
||||
|
||||
var games = new Models.OfflineList.Games
|
||||
var games = new Data.Models.OfflineList.Games
|
||||
{
|
||||
Game = [game],
|
||||
};
|
||||
|
||||
var image = new Models.OfflineList.Image
|
||||
var image = new Data.Models.OfflineList.Image
|
||||
{
|
||||
X = "XXXXXX",
|
||||
Y = "XXXXXX",
|
||||
@@ -284,19 +283,19 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Height = "XXXXXX",
|
||||
};
|
||||
|
||||
var images = new Models.OfflineList.Images
|
||||
var images = new Data.Models.OfflineList.Images
|
||||
{
|
||||
Width = "XXXXXX",
|
||||
Height = "XXXXXX",
|
||||
Image = [image],
|
||||
};
|
||||
|
||||
var gui = new Models.OfflineList.GUI
|
||||
var gui = new Data.Models.OfflineList.GUI
|
||||
{
|
||||
Images = images,
|
||||
};
|
||||
|
||||
return new Models.OfflineList.Dat
|
||||
return new Data.Models.OfflineList.Dat
|
||||
{
|
||||
NoNamespaceSchemaLocation = "XXXXXX",
|
||||
Configuration = configuration,
|
||||
@@ -308,7 +307,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Configuration
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.Configuration? configuration)
|
||||
private static void Validate(Data.Models.OfflineList.Configuration? configuration)
|
||||
{
|
||||
Assert.NotNull(configuration);
|
||||
Assert.Equal("XXXXXX", configuration.DatName);
|
||||
@@ -327,7 +326,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Infos
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.Infos? infos)
|
||||
private static void Validate(Data.Models.OfflineList.Infos? infos)
|
||||
{
|
||||
Assert.NotNull(infos);
|
||||
Validate(infos.Title);
|
||||
@@ -349,7 +348,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a InfoBase
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.InfoBase? info)
|
||||
private static void Validate(Data.Models.OfflineList.InfoBase? info)
|
||||
{
|
||||
Assert.NotNull(info);
|
||||
Assert.Equal("XXXXXX", info.Visible);
|
||||
@@ -360,7 +359,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a CanOpen
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.CanOpen? canopen)
|
||||
private static void Validate(Data.Models.OfflineList.CanOpen? canopen)
|
||||
{
|
||||
Assert.NotNull(canopen);
|
||||
Assert.NotNull(canopen.Extension);
|
||||
@@ -371,7 +370,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a NewDat
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.NewDat? newdat)
|
||||
private static void Validate(Data.Models.OfflineList.NewDat? newdat)
|
||||
{
|
||||
Assert.NotNull(newdat);
|
||||
Assert.Equal("XXXXXX", newdat.DatVersionUrl);
|
||||
@@ -382,7 +381,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a DatUrl
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.DatUrl? daturl)
|
||||
private static void Validate(Data.Models.OfflineList.DatUrl? daturl)
|
||||
{
|
||||
Assert.NotNull(daturl);
|
||||
Assert.Equal("XXXXXX", daturl.FileName);
|
||||
@@ -392,7 +391,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Search
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.Search? search)
|
||||
private static void Validate(Data.Models.OfflineList.Search? search)
|
||||
{
|
||||
Assert.NotNull(search);
|
||||
Assert.NotNull(search.To);
|
||||
@@ -403,7 +402,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a To
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.To? to)
|
||||
private static void Validate(Data.Models.OfflineList.To? to)
|
||||
{
|
||||
Assert.NotNull(to);
|
||||
Assert.Equal("XXXXXX", to.Value);
|
||||
@@ -418,7 +417,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Find
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.Find? find)
|
||||
private static void Validate(Data.Models.OfflineList.Find? find)
|
||||
{
|
||||
Assert.NotNull(find);
|
||||
Assert.Equal("XXXXXX", find.Operation);
|
||||
@@ -429,7 +428,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Games
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.Games? games)
|
||||
private static void Validate(Data.Models.OfflineList.Games? games)
|
||||
{
|
||||
Assert.NotNull(games);
|
||||
Assert.NotNull(games.Game);
|
||||
@@ -440,7 +439,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Game
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.Game? game)
|
||||
private static void Validate(Data.Models.OfflineList.Game? game)
|
||||
{
|
||||
Assert.NotNull(game);
|
||||
Assert.Equal("XXXXXX", game.ImageNumber);
|
||||
@@ -462,7 +461,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Files
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.Files? files)
|
||||
private static void Validate(Data.Models.OfflineList.Files? files)
|
||||
{
|
||||
Assert.NotNull(files);
|
||||
Assert.NotNull(files.RomCRC);
|
||||
@@ -473,7 +472,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a FileRomCRC
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.FileRomCRC? fileromcrc)
|
||||
private static void Validate(Data.Models.OfflineList.FileRomCRC? fileromcrc)
|
||||
{
|
||||
Assert.NotNull(fileromcrc);
|
||||
Assert.Equal("XXXXXX", fileromcrc.Extension);
|
||||
@@ -483,7 +482,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a GUI
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.GUI? gui)
|
||||
private static void Validate(Data.Models.OfflineList.GUI? gui)
|
||||
{
|
||||
Assert.NotNull(gui);
|
||||
Validate(gui.Images);
|
||||
@@ -492,7 +491,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Images
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.Images? images)
|
||||
private static void Validate(Data.Models.OfflineList.Images? images)
|
||||
{
|
||||
Assert.NotNull(images);
|
||||
Assert.Equal("XXXXXX", images.Width);
|
||||
@@ -506,7 +505,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Image
|
||||
/// </summary>
|
||||
private static void Validate(Models.OfflineList.Image? image)
|
||||
private static void Validate(Data.Models.OfflineList.Image? image)
|
||||
{
|
||||
Assert.NotNull(image);
|
||||
Assert.Equal("XXXXXX", image.X);
|
||||
@@ -515,4 +514,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Equal("XXXXXX", image.Height);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class OpenMSXTests
|
||||
{
|
||||
@@ -75,18 +74,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.OpenMSX();
|
||||
var serializer = new Serialization.Serializers.OpenMSX();
|
||||
var deserializer = new OpenMSX();
|
||||
var serializer = new Serialization.Writers.OpenMSX();
|
||||
|
||||
// Build the data
|
||||
Models.OpenMSX.SoftwareDb sdb = Build();
|
||||
Data.Models.OpenMSX.SoftwareDb sdb = Build();
|
||||
|
||||
// Serialize to stream
|
||||
Stream? metadata = serializer.Serialize(sdb);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.OpenMSX.SoftwareDb? newSdb = deserializer.Deserialize(metadata);
|
||||
Data.Models.OpenMSX.SoftwareDb? newSdb = deserializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newSdb);
|
||||
@@ -100,15 +99,15 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.OpenMSX.SoftwareDb Build()
|
||||
private static Data.Models.OpenMSX.SoftwareDb Build()
|
||||
{
|
||||
var original = new Models.OpenMSX.Original
|
||||
var original = new Data.Models.OpenMSX.Original
|
||||
{
|
||||
Value = "XXXXXX",
|
||||
Content = "XXXXXX",
|
||||
};
|
||||
|
||||
var rom = new Models.OpenMSX.Rom
|
||||
var rom = new Data.Models.OpenMSX.Rom
|
||||
{
|
||||
Start = "XXXXXX",
|
||||
Type = "XXXXXX",
|
||||
@@ -116,13 +115,13 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Remark = "XXXXXX",
|
||||
};
|
||||
|
||||
var dump_rom = new Models.OpenMSX.Dump
|
||||
var dump_rom = new Data.Models.OpenMSX.Dump
|
||||
{
|
||||
Original = original,
|
||||
Rom = rom,
|
||||
};
|
||||
|
||||
var megarom = new Models.OpenMSX.MegaRom
|
||||
var megarom = new Data.Models.OpenMSX.MegaRom
|
||||
{
|
||||
Start = "XXXXXX",
|
||||
Type = "XXXXXX",
|
||||
@@ -130,13 +129,13 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Remark = "XXXXXX",
|
||||
};
|
||||
|
||||
var dump_megarom = new Models.OpenMSX.Dump
|
||||
var dump_megarom = new Data.Models.OpenMSX.Dump
|
||||
{
|
||||
Original = original,
|
||||
Rom = megarom,
|
||||
};
|
||||
|
||||
var sccpluscart = new Models.OpenMSX.SCCPlusCart
|
||||
var sccpluscart = new Data.Models.OpenMSX.SCCPlusCart
|
||||
{
|
||||
Start = "XXXXXX",
|
||||
Type = "XXXXXX",
|
||||
@@ -144,13 +143,13 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Remark = "XXXXXX",
|
||||
};
|
||||
|
||||
var dump_sccpluscart = new Models.OpenMSX.Dump
|
||||
var dump_sccpluscart = new Data.Models.OpenMSX.Dump
|
||||
{
|
||||
Original = original,
|
||||
Rom = sccpluscart,
|
||||
};
|
||||
|
||||
var software = new Models.OpenMSX.Software
|
||||
var software = new Data.Models.OpenMSX.Software
|
||||
{
|
||||
Title = "XXXXXX",
|
||||
GenMSXID = "XXXXXX",
|
||||
@@ -161,7 +160,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Dump = [dump_rom, dump_megarom, dump_sccpluscart],
|
||||
};
|
||||
|
||||
return new Models.OpenMSX.SoftwareDb
|
||||
return new Data.Models.OpenMSX.SoftwareDb
|
||||
{
|
||||
Timestamp = "XXXXXX",
|
||||
Software = [software],
|
||||
@@ -171,7 +170,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Software
|
||||
/// </summary>
|
||||
private static void Validate(Models.OpenMSX.Software? software)
|
||||
private static void Validate(Data.Models.OpenMSX.Software? software)
|
||||
{
|
||||
Assert.NotNull(software);
|
||||
Assert.Equal("XXXXXX", software.Title);
|
||||
@@ -192,7 +191,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Dump
|
||||
/// </summary>
|
||||
private static void Validate(Models.OpenMSX.Dump? dump)
|
||||
private static void Validate(Data.Models.OpenMSX.Dump? dump)
|
||||
{
|
||||
Assert.NotNull(dump);
|
||||
Validate(dump.Original);
|
||||
@@ -202,7 +201,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Original
|
||||
/// </summary>
|
||||
private static void Validate(Models.OpenMSX.Original? original)
|
||||
private static void Validate(Data.Models.OpenMSX.Original? original)
|
||||
{
|
||||
Assert.NotNull(original);
|
||||
Assert.Equal("XXXXXX", original.Value);
|
||||
@@ -212,7 +211,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a RomBase
|
||||
/// </summary>
|
||||
private static void Validate(Models.OpenMSX.RomBase? rombase)
|
||||
private static void Validate(Data.Models.OpenMSX.RomBase? rombase)
|
||||
{
|
||||
Assert.NotNull(rombase);
|
||||
Assert.Equal("XXXXXX", rombase.Start);
|
||||
@@ -221,4 +220,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Equal("XXXXXX", rombase.Remark);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class PAKTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class PFFTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class PICTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class PKZIPTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class PlayJAudioTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class PlayJPlaylistTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class PortableExecutableTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class QuantumTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class RomCenterTests
|
||||
{
|
||||
@@ -75,18 +74,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.RomCenter();
|
||||
var serializer = new Serialization.Serializers.RomCenter();
|
||||
var deserializer = new RomCenter();
|
||||
var serializer = new Serialization.Writers.RomCenter();
|
||||
|
||||
// Build the data
|
||||
Models.RomCenter.MetadataFile mf = Build();
|
||||
Data.Models.RomCenter.MetadataFile mf = Build();
|
||||
|
||||
// Serialize to stream
|
||||
Stream? metadata = serializer.Serialize(mf);
|
||||
Stream? metadata = serializer.SerializeStream(mf);
|
||||
Assert.NotNull(metadata);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.RomCenter.MetadataFile? newMf = deserializer.Deserialize(metadata);
|
||||
Data.Models.RomCenter.MetadataFile? newMf = deserializer.Deserialize(metadata);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
@@ -99,9 +98,9 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.RomCenter.MetadataFile Build()
|
||||
private static Data.Models.RomCenter.MetadataFile Build()
|
||||
{
|
||||
var credits = new Models.RomCenter.Credits
|
||||
var credits = new Data.Models.RomCenter.Credits
|
||||
{
|
||||
Author = "XXXXXX",
|
||||
Version = "XXXXXX",
|
||||
@@ -112,7 +111,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Comment = "XXXXXX",
|
||||
};
|
||||
|
||||
var dat = new Models.RomCenter.Dat
|
||||
var dat = new Data.Models.RomCenter.Dat
|
||||
{
|
||||
Version = "XXXXXX",
|
||||
Plugin = "XXXXXX",
|
||||
@@ -120,13 +119,13 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Merge = "XXXXXX",
|
||||
};
|
||||
|
||||
var emulator = new Models.RomCenter.Emulator
|
||||
var emulator = new Data.Models.RomCenter.Emulator
|
||||
{
|
||||
RefName = "XXXXXX",
|
||||
Version = "XXXXXX",
|
||||
};
|
||||
|
||||
var rom = new Models.RomCenter.Rom
|
||||
var rom = new Data.Models.RomCenter.Rom
|
||||
{
|
||||
ParentName = "XXXXXX",
|
||||
ParentDescription = "XXXXXX",
|
||||
@@ -139,12 +138,12 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
MergeName = "XXXXXX",
|
||||
};
|
||||
|
||||
var games = new Models.RomCenter.Games
|
||||
var games = new Data.Models.RomCenter.Games
|
||||
{
|
||||
Rom = [rom],
|
||||
};
|
||||
|
||||
return new Models.RomCenter.MetadataFile
|
||||
return new Data.Models.RomCenter.MetadataFile
|
||||
{
|
||||
Credits = credits,
|
||||
Dat = dat,
|
||||
@@ -156,7 +155,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Credits
|
||||
/// </summary>
|
||||
private static void Validate(Models.RomCenter.Credits? credits)
|
||||
private static void Validate(Data.Models.RomCenter.Credits? credits)
|
||||
{
|
||||
Assert.NotNull(credits);
|
||||
Assert.Equal("XXXXXX", credits.Author);
|
||||
@@ -171,7 +170,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Dat
|
||||
/// </summary>
|
||||
private static void Validate(Models.RomCenter.Dat? dat)
|
||||
private static void Validate(Data.Models.RomCenter.Dat? dat)
|
||||
{
|
||||
Assert.NotNull(dat);
|
||||
Assert.Equal("XXXXXX", dat.Version);
|
||||
@@ -183,7 +182,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Emulator
|
||||
/// </summary>
|
||||
private static void Validate(Models.RomCenter.Emulator? emulator)
|
||||
private static void Validate(Data.Models.RomCenter.Emulator? emulator)
|
||||
{
|
||||
Assert.NotNull(emulator);
|
||||
Assert.Equal("XXXXXX", emulator.RefName);
|
||||
@@ -193,7 +192,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Games
|
||||
/// </summary>
|
||||
private static void Validate(Models.RomCenter.Games? games)
|
||||
private static void Validate(Data.Models.RomCenter.Games? games)
|
||||
{
|
||||
Assert.NotNull(games);
|
||||
Assert.NotNull(games.Rom);
|
||||
@@ -204,7 +203,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Rom
|
||||
/// </summary>
|
||||
private static void Validate(Models.RomCenter.Rom? rom)
|
||||
private static void Validate(Data.Models.RomCenter.Rom? rom)
|
||||
{
|
||||
Assert.NotNull(rom);
|
||||
Assert.Equal("XXXXXX", rom.ParentName);
|
||||
@@ -218,4 +217,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Equal("XXXXXX", rom.MergeName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class SFBTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class SFOTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class SGATests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class SeparatedValueTests
|
||||
{
|
||||
@@ -75,18 +75,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripShortTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.SeparatedValue();
|
||||
var serializer = new Serialization.Serializers.SeparatedValue();
|
||||
var deserializer = new SeparatedValue();
|
||||
var serializer = new Serialization.Writers.SeparatedValue();
|
||||
|
||||
// Build the data
|
||||
Models.SeparatedValue.MetadataFile mf = Build();
|
||||
Data.Models.SeparatedValue.MetadataFile mf = Build();
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = Serialization.Serializers.SeparatedValue.SerializeStream(mf, longHeader: false);
|
||||
Stream? actual = serializer.SerializeStream(mf, ',', longHeader: false);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.SeparatedValue.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
Data.Models.SeparatedValue.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
@@ -103,18 +103,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripLongTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.SeparatedValue();
|
||||
var serializer = new Serialization.Serializers.SeparatedValue();
|
||||
var deserializer = new SeparatedValue();
|
||||
var serializer = new Serialization.Writers.SeparatedValue();
|
||||
|
||||
// Build the data
|
||||
Models.SeparatedValue.MetadataFile mf = Build();
|
||||
Data.Models.SeparatedValue.MetadataFile mf = Build();
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = Serialization.Serializers.SeparatedValue.SerializeStream(mf, longHeader: true);
|
||||
Stream? actual = serializer.SerializeStream(mf, ',', longHeader: true);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.SeparatedValue.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
Data.Models.SeparatedValue.MetadataFile? newMf = deserializer.Deserialize(actual);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newMf);
|
||||
@@ -130,11 +130,11 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.SeparatedValue.MetadataFile Build()
|
||||
private static Data.Models.SeparatedValue.MetadataFile Build()
|
||||
{
|
||||
string[] header = ["header"];
|
||||
|
||||
var disk = new Models.SeparatedValue.Row
|
||||
var disk = new Data.Models.SeparatedValue.Row
|
||||
{
|
||||
FileName = "XXXXXX",
|
||||
InternalName = "XXXXXX",
|
||||
@@ -148,7 +148,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Status = "XXXXXX",
|
||||
};
|
||||
|
||||
var media = new Models.SeparatedValue.Row
|
||||
var media = new Data.Models.SeparatedValue.Row
|
||||
{
|
||||
FileName = "XXXXXX",
|
||||
InternalName = "XXXXXX",
|
||||
@@ -163,7 +163,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
SpamSum = "XXXXXX",
|
||||
};
|
||||
|
||||
var rom = new Models.SeparatedValue.Row
|
||||
var rom = new Data.Models.SeparatedValue.Row
|
||||
{
|
||||
FileName = "XXXXXX",
|
||||
InternalName = "XXXXXX",
|
||||
@@ -183,7 +183,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Status = "XXXXXX",
|
||||
};
|
||||
|
||||
return new Models.SeparatedValue.MetadataFile
|
||||
return new Data.Models.SeparatedValue.MetadataFile
|
||||
{
|
||||
Header = header,
|
||||
Row = [disk, media, rom],
|
||||
@@ -197,15 +197,15 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
{
|
||||
Assert.NotNull(header);
|
||||
if (longHeader)
|
||||
Assert.True(Serialization.Serializers.SeparatedValue.HeaderArrayExtended.SequenceEqual(header));
|
||||
Assert.True(Serialization.Writers.SeparatedValue.HeaderArrayExtended.SequenceEqual(header));
|
||||
else
|
||||
Assert.True(Serialization.Serializers.SeparatedValue.HeaderArrayStandard.SequenceEqual(header));
|
||||
Assert.True(Serialization.Writers.SeparatedValue.HeaderArrayStandard.SequenceEqual(header));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Row
|
||||
/// </summary>
|
||||
private static void ValidateDisk(Models.SeparatedValue.Row? row, bool longHeader)
|
||||
private static void ValidateDisk(Data.Models.SeparatedValue.Row? row, bool longHeader)
|
||||
{
|
||||
Assert.NotNull(row);
|
||||
Assert.Equal("XXXXXX", row.FileName);
|
||||
@@ -233,13 +233,14 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(row.SHA512);
|
||||
Assert.Null(row.SpamSum);
|
||||
}
|
||||
|
||||
Assert.Equal("XXXXXX", row.Status);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Row
|
||||
/// </summary>
|
||||
private static void ValidateMedia(Models.SeparatedValue.Row? row, bool longHeader)
|
||||
private static void ValidateMedia(Data.Models.SeparatedValue.Row? row, bool longHeader)
|
||||
{
|
||||
Assert.NotNull(row);
|
||||
Assert.Equal("XXXXXX", row.FileName);
|
||||
@@ -267,13 +268,14 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(row.SHA512);
|
||||
Assert.Null(row.SpamSum);
|
||||
}
|
||||
|
||||
Assert.NotNull(row.Status); Assert.Empty(row.Status);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a Row
|
||||
/// </summary>
|
||||
private static void ValidateRom(Models.SeparatedValue.Row? row, bool longHeader)
|
||||
private static void ValidateRom(Data.Models.SeparatedValue.Row? row, bool longHeader)
|
||||
{
|
||||
Assert.NotNull(row);
|
||||
Assert.Equal("XXXXXX", row.FileName);
|
||||
@@ -302,7 +304,8 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(row.SHA512);
|
||||
Assert.Null(row.SpamSum);
|
||||
}
|
||||
|
||||
Assert.Equal("XXXXXX", row.Status);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
73
SabreTools.Serialization.Test/Readers/SkuSisTests.cs
Normal file
73
SabreTools.Serialization.Test/Readers/SkuSisTests.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class SkuSisTests
|
||||
{
|
||||
[Fact]
|
||||
public void NullArray_Null()
|
||||
{
|
||||
byte[]? data = null;
|
||||
int offset = 0;
|
||||
var deserializer = new SkuSis();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyArray_Null()
|
||||
{
|
||||
byte[]? data = [];
|
||||
int offset = 0;
|
||||
var deserializer = new SkuSis();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidArray_Null()
|
||||
{
|
||||
byte[]? data = [.. Enumerable.Repeat<byte>(0xFF, 1024)];
|
||||
int offset = 0;
|
||||
var deserializer = new SkuSis();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NullStream_Null()
|
||||
{
|
||||
Stream? data = null;
|
||||
var deserializer = new SkuSis();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([]);
|
||||
var deserializer = new SkuSis();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([.. Enumerable.Repeat<byte>(0xFF, 1024)]);
|
||||
var deserializer = new SkuSis();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class SoftwareListTests
|
||||
{
|
||||
@@ -75,18 +74,18 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
public void RoundTripTest()
|
||||
{
|
||||
// Get the serializer and deserializer
|
||||
var deserializer = new Serialization.Deserializers.SoftwareList();
|
||||
var serializer = new Serialization.Serializers.SoftwareList();
|
||||
var deserializer = new SoftwareList();
|
||||
var serializer = new Serialization.Writers.SoftwareList();
|
||||
|
||||
// Build the data
|
||||
Models.SoftwareList.SoftwareList sl = Build();
|
||||
Data.Models.SoftwareList.SoftwareList sl = Build();
|
||||
|
||||
// Serialize to stream
|
||||
Stream? actual = serializer.Serialize(sl);
|
||||
Assert.NotNull(actual);
|
||||
|
||||
// Serialize back to original model
|
||||
Models.SoftwareList.SoftwareList? newSl = deserializer.Deserialize(actual);
|
||||
Data.Models.SoftwareList.SoftwareList? newSl = deserializer.Deserialize(actual);
|
||||
|
||||
// Validate the data
|
||||
Assert.NotNull(newSl);
|
||||
@@ -102,27 +101,27 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Build model for serialization and deserialization
|
||||
/// </summary>
|
||||
private static Models.SoftwareList.SoftwareList Build()
|
||||
private static Data.Models.SoftwareList.SoftwareList Build()
|
||||
{
|
||||
var info = new Models.SoftwareList.Info
|
||||
var info = new Data.Models.SoftwareList.Info
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
};
|
||||
|
||||
var sharedfeat = new Models.SoftwareList.SharedFeat
|
||||
var sharedfeat = new Data.Models.SoftwareList.SharedFeat
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
};
|
||||
|
||||
var feature = new Models.SoftwareList.Feature
|
||||
var feature = new Data.Models.SoftwareList.Feature
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
};
|
||||
|
||||
var rom = new Models.SoftwareList.Rom
|
||||
var rom = new Data.Models.SoftwareList.Rom
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Size = "XXXXXX",
|
||||
@@ -135,7 +134,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
LoadFlag = "XXXXXX",
|
||||
};
|
||||
|
||||
var dataarea = new Models.SoftwareList.DataArea
|
||||
var dataarea = new Data.Models.SoftwareList.DataArea
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Size = "XXXXXX",
|
||||
@@ -144,7 +143,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Rom = [rom],
|
||||
};
|
||||
|
||||
var disk = new Models.SoftwareList.Disk
|
||||
var disk = new Data.Models.SoftwareList.Disk
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
@@ -153,20 +152,20 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Writeable = "XXXXXX",
|
||||
};
|
||||
|
||||
var diskarea = new Models.SoftwareList.DiskArea
|
||||
var diskarea = new Data.Models.SoftwareList.DiskArea
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Disk = [disk],
|
||||
};
|
||||
|
||||
var dipvalue = new Models.SoftwareList.DipValue
|
||||
var dipvalue = new Data.Models.SoftwareList.DipValue
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Value = "XXXXXX",
|
||||
Default = "XXXXXX",
|
||||
};
|
||||
|
||||
var dipswitch = new Models.SoftwareList.DipSwitch
|
||||
var dipswitch = new Data.Models.SoftwareList.DipSwitch
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Tag = "XXXXXX",
|
||||
@@ -174,7 +173,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
DipValue = [dipvalue],
|
||||
};
|
||||
|
||||
var part = new Models.SoftwareList.Part
|
||||
var part = new Data.Models.SoftwareList.Part
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Interface = "XXXXXX",
|
||||
@@ -184,7 +183,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
DipSwitch = [dipswitch],
|
||||
};
|
||||
|
||||
var software = new Models.SoftwareList.Software
|
||||
var software = new Data.Models.SoftwareList.Software
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
CloneOf = "XXXXXX",
|
||||
@@ -198,7 +197,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Part = [part],
|
||||
};
|
||||
|
||||
return new Models.SoftwareList.SoftwareList
|
||||
return new Data.Models.SoftwareList.SoftwareList
|
||||
{
|
||||
Name = "XXXXXX",
|
||||
Description = "XXXXXX",
|
||||
@@ -210,7 +209,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Software
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.Software? software)
|
||||
private static void Validate(Data.Models.SoftwareList.Software? software)
|
||||
{
|
||||
Assert.NotNull(software);
|
||||
Assert.Equal("XXXXXX", software.Name);
|
||||
@@ -237,7 +236,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Info
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.Info? info)
|
||||
private static void Validate(Data.Models.SoftwareList.Info? info)
|
||||
{
|
||||
Assert.NotNull(info);
|
||||
Assert.Equal("XXXXXX", info.Name);
|
||||
@@ -247,7 +246,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a SharedFeat
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.SharedFeat? sharedfeat)
|
||||
private static void Validate(Data.Models.SoftwareList.SharedFeat? sharedfeat)
|
||||
{
|
||||
Assert.NotNull(sharedfeat);
|
||||
Assert.Equal("XXXXXX", sharedfeat.Name);
|
||||
@@ -257,7 +256,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Part
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.Part? part)
|
||||
private static void Validate(Data.Models.SoftwareList.Part? part)
|
||||
{
|
||||
Assert.NotNull(part);
|
||||
Assert.Equal("XXXXXX", part.Name);
|
||||
@@ -283,7 +282,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Feature
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.Feature? feature)
|
||||
private static void Validate(Data.Models.SoftwareList.Feature? feature)
|
||||
{
|
||||
Assert.NotNull(feature);
|
||||
Assert.Equal("XXXXXX", feature.Name);
|
||||
@@ -293,7 +292,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a DataArea
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.DataArea? dataarea)
|
||||
private static void Validate(Data.Models.SoftwareList.DataArea? dataarea)
|
||||
{
|
||||
Assert.NotNull(dataarea);
|
||||
Assert.Equal("XXXXXX", dataarea.Name);
|
||||
@@ -309,7 +308,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Rom
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.Rom? rom)
|
||||
private static void Validate(Data.Models.SoftwareList.Rom? rom)
|
||||
{
|
||||
Assert.NotNull(rom);
|
||||
Assert.Equal("XXXXXX", rom.Name);
|
||||
@@ -326,7 +325,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a DiskArea
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.DiskArea? diskarea)
|
||||
private static void Validate(Data.Models.SoftwareList.DiskArea? diskarea)
|
||||
{
|
||||
Assert.NotNull(diskarea);
|
||||
Assert.Equal("XXXXXX", diskarea.Name);
|
||||
@@ -339,7 +338,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a Disk
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.Disk? disk)
|
||||
private static void Validate(Data.Models.SoftwareList.Disk? disk)
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("XXXXXX", disk.Name);
|
||||
@@ -352,7 +351,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a DipSwitch
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.DipSwitch? dipswitch)
|
||||
private static void Validate(Data.Models.SoftwareList.DipSwitch? dipswitch)
|
||||
{
|
||||
Assert.NotNull(dipswitch);
|
||||
Assert.Equal("XXXXXX", dipswitch.Name);
|
||||
@@ -367,7 +366,7 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
/// <summary>
|
||||
/// Validate a DipValue
|
||||
/// </summary>
|
||||
private static void Validate(Models.SoftwareList.DipValue? dipvalue)
|
||||
private static void Validate(Data.Models.SoftwareList.DipValue? dipvalue)
|
||||
{
|
||||
Assert.NotNull(dipvalue);
|
||||
Assert.Equal("XXXXXX", dipvalue.Name);
|
||||
@@ -375,4 +374,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Equal("XXXXXX", dipvalue.Default);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
73
SabreTools.Serialization.Test/Readers/TapeArchiveTests.cs
Normal file
73
SabreTools.Serialization.Test/Readers/TapeArchiveTests.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class TapeArchiveTests
|
||||
{
|
||||
[Fact]
|
||||
public void NullArray_Null()
|
||||
{
|
||||
byte[]? data = null;
|
||||
int offset = 0;
|
||||
var deserializer = new TapeArchive();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyArray_Null()
|
||||
{
|
||||
byte[]? data = [];
|
||||
int offset = 0;
|
||||
var deserializer = new TapeArchive();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidArray_Null()
|
||||
{
|
||||
byte[]? data = [.. Enumerable.Repeat<byte>(0xFF, 1024)];
|
||||
int offset = 0;
|
||||
var deserializer = new TapeArchive();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NullStream_Null()
|
||||
{
|
||||
Stream? data = null;
|
||||
var deserializer = new TapeArchive();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([]);
|
||||
var deserializer = new TapeArchive();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([.. Enumerable.Repeat<byte>(0xFF, 1024)]);
|
||||
var deserializer = new TapeArchive();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class VBSPTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class VPKTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class WAD3Tests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class WiseOverlayHeaderTests
|
||||
{
|
||||
[Fact]
|
||||
public void NullArray_Null()
|
||||
{
|
||||
byte[]? data = null;
|
||||
int offset = 0;
|
||||
var deserializer = new WiseOverlayHeader();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyArray_Null()
|
||||
{
|
||||
byte[]? data = [];
|
||||
int offset = 0;
|
||||
var deserializer = new WiseOverlayHeader();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidArray_Null()
|
||||
{
|
||||
byte[]? data = [.. Enumerable.Repeat<byte>(0xFF, 1024)];
|
||||
int offset = 0;
|
||||
var deserializer = new WiseOverlayHeader();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NullStream_Null()
|
||||
{
|
||||
Stream? data = null;
|
||||
var deserializer = new WiseOverlayHeader();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([]);
|
||||
var deserializer = new WiseOverlayHeader();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([.. Enumerable.Repeat<byte>(0xFF, 1024)]);
|
||||
var deserializer = new WiseOverlayHeader();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
73
SabreTools.Serialization.Test/Readers/WiseScriptTests.cs
Normal file
73
SabreTools.Serialization.Test/Readers/WiseScriptTests.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class WiseScriptTests
|
||||
{
|
||||
[Fact]
|
||||
public void NullArray_Null()
|
||||
{
|
||||
byte[]? data = null;
|
||||
int offset = 0;
|
||||
var deserializer = new WiseScript();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyArray_Null()
|
||||
{
|
||||
byte[]? data = [];
|
||||
int offset = 0;
|
||||
var deserializer = new WiseScript();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidArray_Null()
|
||||
{
|
||||
byte[]? data = [.. Enumerable.Repeat<byte>(0xFF, 1024)];
|
||||
int offset = 0;
|
||||
var deserializer = new WiseScript();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NullStream_Null()
|
||||
{
|
||||
Stream? data = null;
|
||||
var deserializer = new WiseScript();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([]);
|
||||
var deserializer = new WiseScript();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([.. Enumerable.Repeat<byte>(0xFF, 1024)]);
|
||||
var deserializer = new WiseScript();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class WiseSectionHeaderTests
|
||||
{
|
||||
[Fact]
|
||||
public void NullArray_Null()
|
||||
{
|
||||
byte[]? data = null;
|
||||
int offset = 0;
|
||||
var deserializer = new WiseSectionHeader();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyArray_Null()
|
||||
{
|
||||
byte[]? data = [];
|
||||
int offset = 0;
|
||||
var deserializer = new WiseSectionHeader();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidArray_Null()
|
||||
{
|
||||
byte[]? data = [.. Enumerable.Repeat<byte>(0xFF, 1024)];
|
||||
int offset = 0;
|
||||
var deserializer = new WiseSectionHeader();
|
||||
|
||||
var actual = deserializer.Deserialize(data, offset);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NullStream_Null()
|
||||
{
|
||||
Stream? data = null;
|
||||
var deserializer = new WiseSectionHeader();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EmptyStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([]);
|
||||
var deserializer = new WiseSectionHeader();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidStream_Null()
|
||||
{
|
||||
Stream? data = new MemoryStream([.. Enumerable.Repeat<byte>(0xFF, 1024)]);
|
||||
var deserializer = new WiseSectionHeader();
|
||||
|
||||
var actual = deserializer.Deserialize(data);
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class XMIDTests
|
||||
{
|
||||
@@ -36,4 +36,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using SabreTools.Serialization.Deserializers;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using Xunit;
|
||||
|
||||
namespace SabreTools.Serialization.Test.Deserializers
|
||||
namespace SabreTools.Serialization.Test.Readers
|
||||
{
|
||||
public class XZPTests
|
||||
{
|
||||
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
|
||||
Assert.Null(actual);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user