Compare commits

...

377 Commits
1.9.1 ... 2.2.0

Author SHA1 Message Date
Matt Nadareski
4de061e0d1 Bump version 2025-11-24 08:59:19 -05:00
Matt Nadareski
258e894c30 Update GC.SharpCompress 2025-11-23 19:59:28 -05:00
Matt Nadareski
8658eaf4e0 Format GHA definitions 2025-11-17 08:39:16 -05:00
Matt Nadareski
6d341abc75 Fix comment about CFB 2025-11-17 08:33:00 -05:00
Matt Nadareski
4821d63b4a Off-by-one spacing 2025-11-15 09:10:34 -05:00
Matt Nadareski
0617bf3170 Process all folders in all MS-CAB files in a set (fixes #43) 2025-11-15 09:00:28 -05:00
Matt Nadareski
425d13a2ac Fix inconsistencies in IS-CAB 2025-11-14 23:21:04 -05:00
Matt Nadareski
8a1e90f537 Reduce unnecessary casts 2025-11-14 21:33:55 -05:00
Matt Nadareski
ddc00948ed Remove red herring zlib code 2025-11-14 21:08:55 -05:00
Matt Nadareski
c96ee81f06 Simplify fixed statements 2025-11-14 20:36:46 -05:00
Matt Nadareski
f6201e2c35 In-depth cleanup with .NET 10 concepts 2025-11-14 14:06:43 -05:00
Matt Nadareski
d63fcfcf7f Minor formatting change to external code 2025-11-14 10:30:15 -05:00
Matt Nadareski
dcc50c4c23 Remove empty .gitmodules 2025-11-14 10:28:55 -05:00
Matt Nadareski
60e46e580d Cache more properties using the field keyword 2025-11-14 10:14:50 -05:00
Matt Nadareski
0638998773 Use auto-fields where possible 2025-11-14 09:48:00 -05:00
Matt Nadareski
ad3113987b Add support for .NET 10 2025-11-14 09:06:59 -05:00
Matt Nadareski
f2f0d0f2e7 Try to fix self-referencing MS-CAB 2025-11-13 14:07:46 -05:00
Matt Nadareski
f7fd2f6f65 Name some type parameters 2025-11-11 09:57:38 -05:00
Matt Nadareski
281c18e21d Bump version 2025-11-06 08:08:10 -05:00
Matt Nadareski
1a9c8b5392 Scaffolding for the future 2025-11-06 08:01:04 -05:00
Deterous
831a272f4b Final ISO9660 fix (#41)
* debug

* using

* Test fix

* Final fix
2025-11-05 20:26:42 -05:00
Matt Nadareski
f47e68b9ba Add Mode0 and Mode2 formless models 2025-11-05 09:49:32 -05:00
Matt Nadareski
eaabd2ee77 Add static readers for CD-ROM sector types 2025-11-05 09:37:56 -05:00
Matt Nadareski
a269edd6ea Missed one explicit type 2025-11-05 09:20:48 -05:00
Matt Nadareski
3bb501ce0c Separate out some helper methods 2025-11-05 09:14:37 -05:00
Deterous
d0006a4653 Custom ISO Stream for full CDROM support (#40)
* Implement custom ISO stream for CDROM support

* Delete old files

* Delete old test

* Leaner CDROM wrapper

* Fix custom stream

* WrapperBase using ISO stream

* Reset stream after deserializing

* Fix SeekOrigin

* Return to cached position

* CDROM Constants

* correct ns

* fix href
2025-11-05 08:20:34 -05:00
Matt Nadareski
c48a1394bc Be descriptive about types 2025-11-04 14:15:39 -05:00
Matt Nadareski
fcf7fcfd44 Be descriptive about types 2025-11-04 10:49:03 -05:00
Matt Nadareski
cca08e7103 Use consistent naming 2025-11-04 10:27:00 -05:00
Matt Nadareski
b908732f5c Fix logical block extension 2025-11-04 10:25:55 -05:00
Matt Nadareski
4ee4a6e85f Slight extension cleanup 2025-11-04 10:07:57 -05:00
Matt Nadareski
7990f11bab Remove unnecessary null checks 2025-11-04 09:54:24 -05:00
Matt Nadareski
427f7c9136 Remove unnecessary null checks 2025-11-04 09:46:03 -05:00
Matt Nadareski
f938f1593d Formatting update for readability 2025-11-04 09:15:12 -05:00
Matt Nadareski
480a1834ed Logic inversion and slight cleanup 2025-11-03 20:16:54 -05:00
Matt Nadareski
df5acc648c Minor cleanup 2025-11-03 10:31:30 -05:00
Matt Nadareski
10569e6aa1 Add tests for CDROM 2025-11-03 10:29:52 -05:00
Matt Nadareski
e5103b4830 Fix format comment for ExtractionTool 2025-11-03 09:27:57 -05:00
Matt Nadareski
513646fc53 Fix ExtractionTool publish 2025-11-03 09:03:45 -05:00
Matt Nadareski
27f723bf2f CascLibSharp isn't used and can be removed 2025-11-03 08:53:04 -05:00
Matt Nadareski
6511ecb5ad Merge pull request #39 from SabreTools/storm
Directly include StormLibSharp
2025-11-03 08:39:47 -05:00
Matt Nadareski
7bf6e6f344 Code cleanup and slight modernization 2025-11-03 08:36:12 -05:00
Matt Nadareski
d3e340ae39 Add and use MPQ filename constants 2025-11-02 23:21:29 -05:00
Matt Nadareski
22167a9617 Recursion isn't needed now 2025-11-02 22:27:02 -05:00
Matt Nadareski
48bea55133 Enable extraction on all .NET versions (not OSes) 2025-11-02 22:20:21 -05:00
Matt Nadareski
42239919e5 Enable StormLib for all .NET versions 2025-11-02 22:07:40 -05:00
Matt Nadareski
4840d9df6e Remove NoWarn and fix issues 2025-11-02 21:41:58 -05:00
Matt Nadareski
1378b87ea6 Directly include StormLibSharp code 2025-11-02 21:11:39 -05:00
Matt Nadareski
6b48164b97 Remove StormLibSharp as submodule 2025-11-02 21:07:51 -05:00
Matt Nadareski
50b09aa249 Automated cleanup 2025-11-02 19:28:16 -05:00
Deterous
ecbd147f6d CD-ROM (Volume Descriptor Set) support (#37)
* CD-ROM Wrapper

* Fix CDROMVolume Reader

* Fix SectorMode enum
2025-11-02 19:21:19 -05:00
HeroponRikiBestest
c13df79848 Fix extraction of recent MPF-zipped logs (#38)
* Fix extraction of recent MPF-zipped logs

* Use greater than or equal to

* corrected logic
2025-11-02 08:35:02 -05:00
Deterous
48bcc1de5b ISO9660: Skip interleaved files and other fixes (#35)
* Skip interleaved files

* Fix warning logic

* Refactor

* Fix extraction

* Multi extent

* review
2025-11-01 22:52:41 -04:00
Matt Nadareski
d082f5de25 Auto formatting cleanup 2025-10-31 21:07:13 -04:00
Deterous
c2321669b6 Support ISO9660 Extended Attribute Record (#34)
* Support ISO9660 Extended Attribute Record

* fix

* Fix

* Don't extract multi-extent files

* ReadUInt16LittleEndian

* debug

* Fix

* Skip EAR when extracting files

* Add comment about EAR

* Fix same-name extraction

* Safer directory parsing

* even safer

* return null

* more directory record checks

* not nullable nullable

* init system use

* valid records should pass

* review

* remove empty case
2025-10-31 21:04:45 -04:00
Matt Nadareski
e382635b85 Fix accidental recursion 2025-10-31 14:01:25 -04:00
Matt Nadareski
b4e02d7f8c Ensure default values in models when not optional 2025-10-31 13:59:28 -04:00
Matt Nadareski
0dc8a0b6c0 One missed explicit endian read 2025-10-31 09:36:28 -04:00
Matt Nadareski
171834986d Fix build from previous cleanup 2025-10-31 00:01:35 -04:00
Matt Nadareski
97af686b73 ZSTD model cleanup 2025-10-30 23:59:25 -04:00
Matt Nadareski
7d627ffc6f XZP model cleanup 2025-10-30 23:59:08 -04:00
Matt Nadareski
d924f25eb2 XZ model cleanup 2025-10-30 23:57:15 -04:00
Matt Nadareski
abd8ef3b1f Xbox model cleanup 2025-10-30 23:55:08 -04:00
Matt Nadareski
e9b8dba3a6 WiseInstaller model cleanup 2025-10-30 23:54:22 -04:00
Matt Nadareski
aaff7e7332 WAD3 model cleanup 2025-10-30 23:50:44 -04:00
Matt Nadareski
2fa00d1a16 VPK model cleanup 2025-10-30 23:48:26 -04:00
Matt Nadareski
8a2a2ecd12 TAR model cleanup 2025-10-30 23:45:14 -04:00
Matt Nadareski
98517bdd8c StarForce model cleanup 2025-10-30 23:43:06 -04:00
Matt Nadareski
dfe76f7e7e SpoonInstaller model cleanup 2025-10-30 23:41:40 -04:00
Matt Nadareski
a2e24b1f5f SGA model cleanup 2025-10-30 23:40:45 -04:00
Matt Nadareski
6a4e76e245 SevenZip model cleanup 2025-10-30 23:34:20 -04:00
Matt Nadareski
1ebec97e0e SecuROM model cleanup 2025-10-30 23:34:06 -04:00
Matt Nadareski
b9f03b02f0 RealArcade model cleanup 2025-10-30 23:31:19 -04:00
Matt Nadareski
2c06760778 RAR model cleanup 2025-10-30 23:31:01 -04:00
Matt Nadareski
3f0ee70b71 Quantum model cleanup 2025-10-30 23:30:45 -04:00
Matt Nadareski
05b34f158b PortableExecutable model cleanup 2025-10-30 23:29:24 -04:00
Matt Nadareski
e08db935b4 PlayStation4 model cleanup 2025-10-30 23:07:12 -04:00
Matt Nadareski
47da068bd3 PlayStation3 model cleanup 2025-10-30 23:06:46 -04:00
Matt Nadareski
9de669606d PlayJ model cleanup 2025-10-30 23:05:24 -04:00
Matt Nadareski
a02d50e61d PKZIP model cleanup 2025-10-30 23:01:55 -04:00
Matt Nadareski
069dab7fba PIC model cleanup 2025-10-30 22:58:02 -04:00
Matt Nadareski
d65edadbbb PFF model cleanup 2025-10-30 22:56:23 -04:00
Matt Nadareski
6307a51c0a PAK model cleanup 2025-10-30 22:54:37 -04:00
Matt Nadareski
d27c602bdf OLE model cleanup 2025-10-30 22:52:56 -04:00
Matt Nadareski
59fe9cb113 Nitro model cleanup 2025-10-30 22:51:16 -04:00
Matt Nadareski
b4b7ba75cb NewExecutable model cleanup 2025-10-30 22:47:17 -04:00
Matt Nadareski
d02e0c16c4 NCF model cleanup 2025-10-30 22:39:08 -04:00
Matt Nadareski
4aa0eb54b7 N3DS model cleanup 2025-10-30 22:36:21 -04:00
Matt Nadareski
c4f73abcb6 MSDOS model cleanup 2025-10-30 22:15:10 -04:00
Matt Nadareski
73dec51a4d MoPaQ model cleanup 2025-10-30 22:12:06 -04:00
Matt Nadareski
b7c3c094ae MicrosoftCabinet model cleanup 2025-10-30 22:07:29 -04:00
Matt Nadareski
97702ab3d5 LZ model cleanup 2025-10-30 22:03:22 -04:00
Matt Nadareski
a9b5fe706c LinearExecutable model cleanup 2025-10-30 22:00:42 -04:00
Matt Nadareski
198d48610c LDSCRYPT model cleanup 2025-10-30 21:55:01 -04:00
Matt Nadareski
c0e0344914 IRD model cleanup 2025-10-30 21:54:27 -04:00
Matt Nadareski
d49b2f1b60 InstallShieldExecutable model cleanup 2025-10-30 21:52:20 -04:00
Matt Nadareski
ec7172466b InstallShieldCabinet model cleanup 2025-10-30 21:51:15 -04:00
Matt Nadareski
d75a512ead InstallShieldArchiveV3 model cleanup 2025-10-30 21:43:38 -04:00
Matt Nadareski
af8b6906b6 GZIP model cleanup 2025-10-30 21:40:25 -04:00
Matt Nadareski
96bc301e6d GCF model cleanup 2025-10-30 21:38:17 -04:00
Matt Nadareski
c10749f34d DVD model cleanup 2025-10-30 21:32:21 -04:00
Matt Nadareski
0e4235c8ba Delphi model cleanup 2025-10-30 21:30:41 -04:00
Matt Nadareski
b2d31bb87e CueSheets model cleanup 2025-10-30 21:30:13 -04:00
Matt Nadareski
3ee88793da COFF model cleanup 2025-10-30 21:29:24 -04:00
Matt Nadareski
ad0f01c3ef CHD model cleanup 2025-10-30 21:27:37 -04:00
Matt Nadareski
63a96a7cf8 CFB model cleanup 2025-10-30 21:26:19 -04:00
Matt Nadareski
b8d8ca9a5c BZip2 model cleanup 2025-10-30 21:22:33 -04:00
Matt Nadareski
6b0fca31ae BSP model cleanup 2025-10-30 21:21:56 -04:00
Matt Nadareski
c147b12b10 Bitmap model cleanup 2025-10-30 20:58:03 -04:00
Matt Nadareski
7884b0b775 BFPK model cleanup 2025-10-30 20:57:35 -04:00
Matt Nadareski
9f3c263328 BDPlus model cleanup 2025-10-30 20:55:39 -04:00
Matt Nadareski
b830ce3d73 AdvancedInstaller model cleanup 2025-10-30 20:54:32 -04:00
Matt Nadareski
e8b7f33bf0 AACS model cleanup 2025-10-30 20:52:35 -04:00
Matt Nadareski
eae75c5943 Allow byte arrays to be non-null in most models 2025-10-30 20:44:16 -04:00
Matt Nadareski
c1f5ebcae1 Remove experiments 2025-10-30 19:50:03 -04:00
Matt Nadareski
acb8e98fe2 Add ImgBurn and UltraISO check extensions 2025-10-30 17:04:29 -04:00
Matt Nadareski
a24a92e97c Add unset reserved bytes extension 2025-10-30 16:22:05 -04:00
Matt Nadareski
f2d2fe97bb Override 2025-10-30 12:06:42 -04:00
Matt Nadareski
705252eec7 Unify Skeleton to ISO-9660 2025-10-30 12:03:13 -04:00
Matt Nadareski
69ae0456f0 Add skeleton printing and tests 2025-10-30 11:50:37 -04:00
Deterous
f07bd07cce Redumper skeleton support (#32)
* Skeleton support

* hide ISO extract

* Return true

* Don't inherit ISO9660

* fix

* fix2

* Skeleton
2025-10-30 11:46:45 -04:00
Matt Nadareski
9db2d2ca05 Reduce complexity of Zstd filename generation 2025-10-30 10:23:50 -04:00
Deterous
85248b0135 ISO 9660 Extraction (#31)
* ISO9660 Extraction

* Fix build

* Decode strings in Printer

* Double comment
2025-10-30 10:00:10 -04:00
Matt Nadareski
8663edc7df Fix unsynced ISO position 2025-10-30 08:20:46 -04:00
Matt Nadareski
b9cc9e40fd Changes based on a code sweep with unrelated issue 2025-10-30 07:51:08 -04:00
HeroponRikiBestest
5ce085ad2b Implement basic ZSTD detection and extraction. (#30)
* Implement basic ZSTD detection and extraction.

* Fix comment

* Remove newline

* Add newline

* Move section

* more newlines banished to the ether

* fix comment and name

* fix final i think
2025-10-29 22:01:23 -04:00
Matt Nadareski
d24f8a2fce Add ECMA link to models readme 2025-10-29 10:11:39 -04:00
Matt Nadareski
a73e830209 This extension is useful 2025-10-29 09:46:12 -04:00
Matt Nadareski
146fb42fd0 Replace remaining Seek with SeekIfPossible 2025-10-29 09:34:52 -04:00
Matt Nadareski
5b54ed719e Better integrate new printing model 2025-10-29 09:23:45 -04:00
Matt Nadareski
02d011228e IRD wrapper exists and should be used 2025-10-29 08:57:01 -04:00
Matt Nadareski
07adfd20a3 Add tests for ISO9660 2025-10-29 08:55:45 -04:00
Matt Nadareski
1d00abd6cc Make printing a wrapper extension 2025-10-29 08:53:14 -04:00
Deterous
36c2cc2f15 ISO 9660 support (#29)
* Begin defining ISO9660 models

* Fix initial models

* Improve ISO9660 models

* ISO9660 models

* Fix fields

* Nullable and enums

* Fix flags attribute

* Start ISO9660 Reader code

* semicolon

* Fix build

* Use EqualsExactly

* Fix build

* Update ISO9660.cs

* Update ISO9660.cs

* Move DirectoryRecordDateTime class

* ParseDirectoryRecordDateTime function

* ST refactoring

* fix return

* return array

* ISO9660 wrapper

* Initial printing code

* semicolon

* Fix

* orphan variable name

* fix null ref

* ISO9660 Printer

* Fix DirectoryRecord parsing

* fix

* test

* test

* Fix reader

* extractable ISO

* partial wrapper class

* namespace

* extension property

* path tables

* Cleanup

* rename directory

* fix

* fix

* typo

* fix2

* Fix

* Cleanup reader

* Count list property

* Parse Path Tables

* fix model name

* fix

* fix2

* fix3

* print path table records

* debug errors

* debug error

* debug

* undo debug

* Fix casting

* Validate path table locations

* print table numbers

* Printer cleanup

* fix printer

* printer++

* Print DecDateTime

* else if

* BootSystemUse

* Use Linq

* custom zero check

* fix

* Update ISO9660.cs

* Update ISO9660.cs

* Update ISO9660.cs

* Update ISO9660.cs

* fix

* debug

* debug2

* debug3

* debug4

* debug5

* debug6

* debug7

* debug8

* Array.TrueForAll

* Update ISO9660.cs

* fix

* cleanup

* typo

* Use BothInt numerics

* using SabreTools.Numerics

* Test nonnull

* nonnull bothint

* Print invalid BothInts

* Print directory record

* typo

* fix

* null check

* directory descriptors

* cleanup printer

* semicolon

* Fix

* flags never null

* more non nullable

* no null

* AppendLineBothEndian

* fix

* rename to Directory

* fix

* namespace

* full namespace

* fix

* cleanup

* Parse directories

* fix

* Fix

* Test parse directories

* PeekByteValue

* Revert CI changes

* Dummy extractor

* Review and fixes

* Fixes

* Final fix

* big endian directory search

* fix big endian changes

* Final fix
2025-10-29 08:46:08 -04:00
Matt Nadareski
27cf01ce84 Add printing cases for empty alongside null 2025-10-28 09:52:53 -04:00
Matt Nadareski
1e94163693 Add both-endian StringBuilder extensions
This has to use a new name for the both-endian handling because otherwise the implicit type handling will otherwise cause compilation errors.
2025-10-28 09:49:38 -04:00
Matt Nadareski
db1f94775b Convert some known Peek calls 2025-10-27 22:55:25 -04:00
Matt Nadareski
ce394eb4e9 Seek, if possible 2025-10-27 22:43:56 -04:00
Matt Nadareski
15109bed88 Update IO to 1.8.0 2025-10-27 22:15:54 -04:00
Matt Nadareski
8a18c8de34 Update rolling tag 2025-10-26 20:31:03 -04:00
HeroponRikiBestest
2f093a80c7 increase buffer size for isexe reading / writing based on deterous's … (#28)
* increase buffer size for isexe reading / writing based on deterous's input

* remove comment
2025-10-26 18:54:35 -04:00
Matt Nadareski
5df1af9c17 Minor cleanup and additions 2025-10-23 16:05:12 -04:00
HeroponRikiBestest
d5ab37a5a6 Add extraction for installshield executables. (#27)
* Add extractor for installshield executables.

* Add comment

* Fix intendation.

* Ensure PRs recursively pull

* Rebase

* Fix formatting for parsex

* newline before obj.name

* Changed while loop check to a position vs length check

* Specify type for chunkSize

* declare chunksize as a const int outside of the loop

* Open file writer with using

* Call fs.flush after every write.

* Improved chunk writing loop.

* Remove now-unecessary variable

* Properly handle extracting files of size greater than int32.

* Use long for overlay address

* create deserializer outside of loop.

* Move null check.

* Don't cache position.

---------

Co-authored-by: Matt Nadareski <mnadareski@outlook.com>
2025-10-23 15:38:51 -04:00
Matt Nadareski
ed9ecf0da9 Ensure PRs recursively pull 2025-10-23 12:08:47 -04:00
Matt Nadareski
4fc17197ca Fix inverted logic of file only flag 2025-10-19 17:59:56 -04:00
Matt Nadareski
94a9cf0c3f Minor tweak to Wise debug statements 2025-10-17 09:56:04 -04:00
Matt Nadareski
1d9e12183f Bump version 2025-10-07 12:42:06 -04:00
Matt Nadareski
aaa8bbe709 This was inconsistent too 2025-10-07 11:25:35 -04:00
Matt Nadareski
805d1b9ad8 Not sure why this part was inconsistent 2025-10-07 11:21:39 -04:00
Matt Nadareski
d24d3e5adb Remove now-unused constants 2025-10-07 10:48:31 -04:00
Matt Nadareski
d3a7d552c3 Use main feature pattern with InfoPrint 2025-10-07 10:20:57 -04:00
Matt Nadareski
9f1c5e2bd2 Use main feature pattern with ExtractionTool 2025-10-07 10:04:19 -04:00
Matt Nadareski
1ec4ea8354 Update packages 2025-10-07 09:37:42 -04:00
Matt Nadareski
e4fab52489 Use CommandLine library for executables 2025-10-06 09:32:01 -04:00
Matt Nadareski
e029fa4833 Skip warning around GC.SharpCompress inclusion 2025-10-05 17:02:44 -04:00
Matt Nadareski
2c3f229a6a Bump version 2025-10-05 16:59:33 -04:00
Matt Nadareski
3558d3532c Do not update offset on name offset 2025-10-02 13:33:51 -04:00
Matt Nadareski
ad5314dc22 Minor tweak 2025-10-01 20:08:33 -04:00
Matt Nadareski
eaa5bb5662 Sections can't be null 2025-10-01 20:06:05 -04:00
Matt Nadareski
fcdc703595 Update readme to be accurate again 2025-09-30 20:58:52 -04:00
Matt Nadareski
ef9fa562ab More BZip documenting 2025-09-30 20:35:40 -04:00
Matt Nadareski
ac285c48fe Start documenting BZip in code 2025-09-30 20:25:18 -04:00
Matt Nadareski
e57ad65210 Migrate to GrindCore fork of SharpCompress 2025-09-30 19:52:14 -04:00
Matt Nadareski
0fc3a30422 Print a couple more XZ fields 2025-09-30 14:09:40 -04:00
Matt Nadareski
49f6704694 Add initial XZ printer 2025-09-30 14:05:34 -04:00
Matt Nadareski
6df712c538 Add XZ parsing to wrapper 2025-09-30 13:56:21 -04:00
Matt Nadareski
bda3076a30 Further XZ parsing fixes 2025-09-30 13:56:11 -04:00
Matt Nadareski
89e8e7c706 Fix more XZ parsing; use read-from-end 2025-09-30 13:22:26 -04:00
Matt Nadareski
c10835d221 Start fixing XZ parsing 2025-09-30 13:08:53 -04:00
Matt Nadareski
a6801350ea Fix issue with XZ enum 2025-09-30 12:48:12 -04:00
Matt Nadareski
c7a5a62041 Require exact versions for build 2025-09-30 11:09:37 -04:00
Matt Nadareski
749b35e5cb Slight tweak to CHD v5 model 2025-09-30 10:59:44 -04:00
Matt Nadareski
3c520d33eb Add XZ reader, fix some minor issues 2025-09-30 09:47:19 -04:00
Matt Nadareski
635170a051 Add reference for BZ2 2025-09-29 23:38:40 -04:00
Matt Nadareski
9619311d11 Store variable-length numbers as ulong 2025-09-29 23:32:58 -04:00
Matt Nadareski
4bee14835c Fix last couple of commits 2025-09-29 23:12:23 -04:00
Matt Nadareski
f44059e16a Add XZ variable length helper methods 2025-09-29 23:07:05 -04:00
Matt Nadareski
bfb206a06d Add XZ models 2025-09-29 22:56:53 -04:00
Matt Nadareski
6b7b05eb31 Port some extensions for GZip from ST 2025-09-29 22:04:10 -04:00
Matt Nadareski
a9a2a04332 Store raw extras field for odd formatting 2025-09-29 21:49:20 -04:00
Matt Nadareski
50459645dd Add a couple GZ constants 2025-09-29 21:39:37 -04:00
Matt Nadareski
564386038f Try using Environment instead of compiler flags 2025-09-29 12:29:14 -04:00
Matt Nadareski
9f229aad47 Bump version 2025-09-29 07:27:50 -04:00
Matt Nadareski
f6f6ea21b4 Sync README with help text 2025-09-28 21:47:37 -04:00
Matt Nadareski
ec416d5631 Document all local samples 2025-09-27 22:47:43 -04:00
Matt Nadareski
335cbca8fb Add clarification 2025-09-27 22:04:20 -04:00
Matt Nadareski
ab8d5ec475 Split unknown AddD field, fix TODO 2025-09-27 22:02:10 -04:00
Matt Nadareski
ef9f050fbf Signature is clearly a string 2025-09-27 21:47:55 -04:00
Matt Nadareski
46b1838d72 Clean up some things around AddD 2025-09-27 21:46:03 -04:00
HeroponRikiBestest
2b9a527743 Small fix just in case. (#25) 2025-09-27 12:59:02 -04:00
HeroponRikiBestest
cb41f8a8a6 Temporary fix for solid archive detection until SharpCompress makes another release. (#24) 2025-09-27 12:32:10 -04:00
Matt Nadareski
fcf003af7d Split Wise extraction to be smarter 2025-09-27 08:26:57 -04:00
Matt Nadareski
350924545c Fix bzip constants 2025-09-26 23:49:35 -04:00
Matt Nadareski
ae6bf0f2da Fix issues from manual testing 2025-09-26 22:52:09 -04:00
Matt Nadareski
7395d9842c Complete Spoon Installer extraction 2025-09-26 22:30:59 -04:00
Matt Nadareski
741a1e13d0 Add framework for Spoon Installer extraction 2025-09-26 22:27:27 -04:00
Matt Nadareski
447064afc1 Add Spoon Installer reader 2025-09-26 22:23:20 -04:00
Matt Nadareski
a443a6833a Add integer values for better research 2025-09-26 22:18:41 -04:00
Matt Nadareski
160239eba7 Add Spoon Installer models and notes 2025-09-26 22:12:27 -04:00
Matt Nadareski
04fb3fd363 Fix documentation issue 2025-09-26 22:02:35 -04:00
Matt Nadareski
ba60c9b516 Add extraction for Advanced Installer 2025-09-26 19:56:51 -04:00
Matt Nadareski
f8ddfcf5ae Add framework for Advanced Installer extraction 2025-09-26 19:43:39 -04:00
Matt Nadareski
c379bdcadc Fix description 2025-09-26 16:49:21 -04:00
Matt Nadareski
575caeda92 Make fixes from manual testing 2025-09-26 16:38:56 -04:00
Matt Nadareski
0d4dcf4a60 Start implementing Advanced Installer reader 2025-09-26 16:30:38 -04:00
Matt Nadareski
ddb14a69d0 Forgot to rename Writers folder 2025-09-26 16:29:16 -04:00
Matt Nadareski
f1ace61076 Introduce and use BaseMetadataSerializer 2025-09-26 16:00:33 -04:00
Matt Nadareski
0f5f866cd2 Rename IModelSerializer to ICrossModel 2025-09-26 15:48:36 -04:00
Matt Nadareski
bd866c5b05 Update package tags 2025-09-26 15:36:22 -04:00
Matt Nadareski
07ea1abbf8 Use correct block format for readme 2025-09-26 15:33:38 -04:00
Matt Nadareski
6853376f60 Unify type parameter naming 2025-09-26 15:28:53 -04:00
Matt Nadareski
0e67f0bff4 Move wrapper interfaces to better namespace 2025-09-26 15:20:49 -04:00
Matt Nadareski
6035c19f47 Move IPrinter interface to better namespace 2025-09-26 15:13:43 -04:00
Matt Nadareski
592a3d3505 Rename *Serializer interfaces to *Writer 2025-09-26 15:10:59 -04:00
Matt Nadareski
2c092ed665 Rename *Deserializer interfaces to *Reader 2025-09-26 15:02:43 -04:00
Matt Nadareski
2bd4a00df4 Rename Serializers to Writers 2025-09-26 14:59:45 -04:00
Matt Nadareski
f0639b28b9 Rename Deserializers to Readers 2025-09-26 14:57:20 -04:00
Matt Nadareski
775bab6656 Add AACS extension 2025-09-26 14:27:49 -04:00
Matt Nadareski
c82d865cd5 Move Extensions to Data path 2025-09-26 13:15:55 -04:00
Matt Nadareski
0b95b9509a Move Printers to Data path 2025-09-26 13:11:57 -04:00
Matt Nadareski
d8185e3970 Move Models to Data path 2025-09-26 13:06:18 -04:00
Matt Nadareski
b3a3766d77 Create and use Attributes namespace 2025-09-26 12:44:16 -04:00
Matt Nadareski
3681682fe8 Internal rename of OID namespace to have Data prefix 2025-09-26 12:29:52 -04:00
Matt Nadareski
12c292d038 Namespace reference cleanup 2025-09-26 12:27:10 -04:00
Matt Nadareski
5af4de2878 Migrate remaining models from Models 2025-09-26 12:09:34 -04:00
Matt Nadareski
2e7f18c407 Migrate non-executable models from Models 2025-09-26 11:57:18 -04:00
Matt Nadareski
48248b2832 Add namespace to the readme 2025-09-26 11:43:49 -04:00
Matt Nadareski
c6082fa7c7 Migrate support file models from Models 2025-09-26 11:42:28 -04:00
Matt Nadareski
3af19510a8 Migrate archive models from Models 2025-09-26 10:57:15 -04:00
Matt Nadareski
2a12b8132f Add README for Models namespace 2025-09-26 10:24:36 -04:00
Matt Nadareski
3daec985ba Migrate metadata models from Models 2025-09-26 10:20:48 -04:00
Matt Nadareski
4b79ee103c Simplify overlay address finding slightly 2025-09-25 21:34:41 -04:00
Matt Nadareski
077abd590a Use constants, add CFB detection to overlays and resources 2025-09-25 21:13:07 -04:00
Matt Nadareski
cab890b1d9 Remove erroneous duplicate code 2025-09-25 20:29:51 -04:00
Matt Nadareski
d3f0858ec4 Forgot the second adjustment 2025-09-25 20:28:25 -04:00
Matt Nadareski
97896b91d7 Cap overlay at 0x10000 bytes 2025-09-25 20:14:41 -04:00
Matt Nadareski
ca354b3b7f Comment about entry point data caching 2025-09-25 16:24:20 -04:00
Matt Nadareski
d035211a64 Off by one? 2025-09-25 16:20:15 -04:00
Matt Nadareski
75728a4d1d Handle large overlays in extraction 2025-09-25 14:07:01 -04:00
Matt Nadareski
265789ea84 Overlay address in PE should be long, fix caching 2025-09-25 13:55:44 -04:00
Matt Nadareski
4577311432 Adjust overlay address for PE using certificate table 2025-09-25 13:53:56 -04:00
Matt Nadareski
963c333c2e Cache the overlay length 2025-09-25 13:50:51 -04:00
Matt Nadareski
6eff6cf3b6 Add TODOs to handle large overlays 2025-09-25 13:41:51 -04:00
Matt Nadareski
c9794691bb Limit overlay caching to int.MaxValue 2025-09-25 13:40:29 -04:00
Matt Nadareski
9574232719 Bump version 2025-09-24 11:06:47 -04:00
Matt Nadareski
676bf584d6 Clean up some console writes 2025-09-24 10:55:39 -04:00
Matt Nadareski
0a4fd01ede Gate MS-CAB warning behind debug to avoid confusion 2025-09-24 10:51:27 -04:00
Matt Nadareski
6cb4023498 Update namespaces in README 2025-09-24 10:50:12 -04:00
Matt Nadareski
8f775dbb3b This should be ObjectIdentifier not strictly ASN.1 2025-09-24 10:47:00 -04:00
Matt Nadareski
91785eab1f Fix tests 2025-09-24 10:40:39 -04:00
Matt Nadareski
4f8751667a Namespace ASN models until Models is updated 2025-09-24 10:40:30 -04:00
Matt Nadareski
ad7508c464 Add some more OIDs 2025-09-24 10:11:21 -04:00
Matt Nadareski
97a9e141ae Add some more OIDs 2025-09-24 09:54:18 -04:00
Matt Nadareski
842a0c3daf Remove useless PathProcessor helper class 2025-09-24 09:43:27 -04:00
Matt Nadareski
b6acde9145 Make consistent with other deserializers 2025-09-24 09:27:24 -04:00
Matt Nadareski
b97dbc2ac5 Simplify extension code slightly 2025-09-24 09:22:23 -04:00
Matt Nadareski
e03852bd7e Simplify ASN.1 integration 2025-09-24 09:19:46 -04:00
Matt Nadareski
0db5de204e Rename TLV deserializer to be more consistent 2025-09-24 09:06:26 -04:00
Matt Nadareski
5fe3f14419 Make TypeLengthValue more model-like 2025-09-24 09:00:48 -04:00
Matt Nadareski
ffe1d9a82d Create and use TypeLengthValue deserializer 2025-09-24 08:54:25 -04:00
Matt Nadareski
11d6560290 Update IO to 1.7.5 2025-09-24 08:30:24 -04:00
Matt Nadareski
e29d8e6728 Integrate ASN.1 code from separate library 2025-09-24 08:25:11 -04:00
Matt Nadareski
918e81a4cb Move extensions to new namespace for cleanliness 2025-09-23 09:58:44 -04:00
Matt Nadareski
ad0ddede38 Fix reference issue 2025-09-22 21:21:43 -04:00
Matt Nadareski
e969b12884 Move wrapper factory up a level 2025-09-22 21:14:33 -04:00
Matt Nadareski
7a5475255f Fix the fake wrapper tests 2025-09-22 20:14:01 -04:00
Matt Nadareski
0ffd436de8 Update packages 2025-09-22 20:07:18 -04:00
Matt Nadareski
4f685187e9 COFF naming doesn't need to continue 2025-09-22 12:56:19 -04:00
Matt Nadareski
2b356b37b1 Sync NE overlay handling with PE 2025-09-22 10:08:46 -04:00
Matt Nadareski
7c56268eb1 Add PFF version 0 detection 2025-09-22 09:35:46 -04:00
Matt Nadareski
970a54e6e3 Add placeholder SFFS wrapper 2025-09-22 09:13:27 -04:00
Matt Nadareski
e35ddf0780 Always overwrite on output, ensure flushed streams 2025-09-21 21:10:40 -04:00
Matt Nadareski
bf35b7c10b Bump version 2025-09-21 12:35:37 -04:00
Matt Nadareski
4026b8ca09 Handle differently-encoded XMLs as textfiles 2025-09-21 12:10:58 -04:00
Matt Nadareski
6d2e2d8c3b Handle some invalid parsing cases that were missed previously 2025-09-21 11:44:58 -04:00
Matt Nadareski
a2b08157cc Fix issue with split resource tables 2025-09-21 11:23:53 -04:00
Matt Nadareski
0108ecf4c1 Bump version 2025-09-21 09:33:55 -04:00
Matt Nadareski
4921da0bb5 Fix issues from porting MPQ from BOS 2025-09-21 00:04:16 -04:00
Matt Nadareski
0c836bb3b1 Try one more thing? 2025-09-20 23:39:49 -04:00
Matt Nadareski
a8e41c1505 Try this 2025-09-20 23:24:12 -04:00
Matt Nadareski
f67e1c9d2b Bump version 2025-09-20 22:38:08 -04:00
Matt Nadareski
f0ce58a79e Move two things out of the lock 2025-09-20 22:32:54 -04:00
Matt Nadareski
b7f782c1b7 Update packages 2025-09-20 22:31:58 -04:00
Matt Nadareski
5e39e169b2 Clean up PE printing a bit 2025-09-20 20:17:38 -04:00
Matt Nadareski
104c5ccad4 XML resources and overlay 2025-09-20 19:48:45 -04:00
Matt Nadareski
d15b4d7d23 Bump version 2025-09-20 10:47:38 -04:00
Matt Nadareski
60e6a75d5e Make public again 2025-09-20 10:40:19 -04:00
Matt Nadareski
484415d0e5 Ensure the resource table has been parsed for version info 2025-09-20 10:36:09 -04:00
Matt Nadareski
0ef9b447c4 Remove extraneous semicolon 2025-09-20 10:34:08 -04:00
Matt Nadareski
8f64e2defd Minor cleanup to previous commit 2025-09-20 10:32:53 -04:00
HeroponRikiBestest
fbdadce129 Add Matroschka processing. (#23)
* Made changes

* Temporary hack to not rely on models without significantly changing current code. Revert all of this with offset-based reading later.

Also added unnecessary casting in wrapperfactory so serialization will build locally. Revert this, since I assume it somehow builds fine for GA/sabre/etc.

* small fixes

* Store matroschka section as PE extension

* Move extractor out of deserializer, remove weird hack

* Potential GA fix

* More potential GA fixes.

* I have no idea why GA hits that error but not me

* Giving up on GA for now

* fix locking issues

* Fix GA building; thank you sabre

* Minor improvements all around

* Catch some braced single-line if statements

* Use var more

* Seperate deserializer into helper methods

* Make file path reading much more sane

* Removed MatroschkaHeaderType enum

* Removed MatroschkaGapType enum, further simplify matgaphelper.

* Remove MatroschkaHasUnknown enum, further simplify Unknown value reading.

* Cache initial offset.

* Remove TryCreate patterns.

* Rename matroschka variable to package

* Newline after object

* Rename to obj

* Remove a few unecessary TODOs

* Seperate hexstring byte read to another line.

* Fix documentation.

* More private static

* Changed data.position setting to seeking. NTS: check if this broke anything later

* rename entries to obj

* MatroschkaEntry to var

* Newline

* Alphabetical

* More alphabetical.

* section to package

* Move private variables.

* Move to extension properties.

* Revert section finding.

* Remove uneeded _dataSource lock and access.

* combine lines and make var

* Combine two null checks.

* Packaged files, some past commits I think I forgot to push.

* Missed two

* newline

* space

* newline

* Combine two lines

* Removed comment

* Return false explicitly

* Change hashing string implementation

* Fix order.

* Use offset reading instead of filedataarray

* Change file reading around a little preemptively for BOS

---------

Co-authored-by: Matt Nadareski <mnadareski@outlook.com>
2025-09-20 10:00:54 -04:00
Matt Nadareski
d3e7abfaa3 Normalize ReadRangeFromSource use 2025-09-20 09:49:42 -04:00
Matt Nadareski
b2279e97b2 CHD is all big-endian 2025-09-18 21:18:43 -04:00
Matt Nadareski
7cf969336f Fix this bumble 2025-09-18 20:54:30 -04:00
Matt Nadareski
f73d48166a Source isn't needed here anymore 2025-09-18 09:46:01 -04:00
Matt Nadareski
53af618fe4 Proof-of-concept Wise section caching 2025-09-18 09:40:15 -04:00
Matt Nadareski
5d2cf58477 Fix this being finicky 2025-09-17 12:56:32 -04:00
Matt Nadareski
664e7dce28 Greater than but not equal 2025-09-17 10:30:35 -04:00
Matt Nadareski
14a8f00864 Clean up nonstandard deserializers 2025-09-16 23:24:49 -04:00
Matt Nadareski
0b889fdc06 Remove weird holdover property 2025-09-16 23:11:14 -04:00
Matt Nadareski
e336efc149 Do the same for serializers 2025-09-16 22:29:52 -04:00
Matt Nadareski
4cd52162eb Static implementations using reflection go away 2025-09-16 22:25:40 -04:00
Matt Nadareski
eab9fff711 One slipped through the cracks 2025-09-16 22:22:32 -04:00
Matt Nadareski
d4f3511060 These don't need to call the reflection one 2025-09-16 22:21:22 -04:00
Matt Nadareski
ed12bbb35c Avoid hidden reflection call for most cases 2025-09-16 22:20:13 -04:00
Matt Nadareski
aa4629fe99 MPQ needs a distinction 2025-09-16 22:12:18 -04:00
Matt Nadareski
1950f23cf4 This should actually be a different exception type 2025-09-16 22:08:50 -04:00
Matt Nadareski
ca7c88cef6 Add better summaries for things 2025-09-16 22:07:05 -04:00
Matt Nadareski
10848e6c51 Fix issue with seeking by introducing more constructors 2025-09-16 21:54:26 -04:00
Matt Nadareski
f5d0f065c1 Handle unknown AACS records a bit better for now 2025-09-16 20:11:41 -04:00
Matt Nadareski
17b0573b0b Handle memory-padded resources tables and non-local resources 2025-09-12 10:50:22 -04:00
Matt Nadareski
7f1d843d96 Minor bugfix in name retrieval 2025-09-12 09:28:27 -04:00
Matt Nadareski
cc4837c1d1 More partial classes for reasonable things 2025-09-12 09:09:40 -04:00
Matt Nadareski
588ee5bfe4 Make partial classes for extraction 2025-09-12 09:02:03 -04:00
Matt Nadareski
e9b1b2750f Fill out the placeholder 2025-09-11 12:32:44 -04:00
Matt Nadareski
1d6fa06e97 Placeholder for section table trailer data 2025-09-11 12:24:56 -04:00
Matt Nadareski
2c22924239 Seek to section table to match docs 2025-09-11 12:17:48 -04:00
Matt Nadareski
eb01dd1e25 Add note for later 2025-09-11 12:14:07 -04:00
Matt Nadareski
0a3cb79b1c Fix issue found in encrypted and obfuscated PE 2025-09-11 12:07:22 -04:00
Matt Nadareski
da9eace8cc Slight tweak to printing again 2025-09-11 11:47:07 -04:00
Matt Nadareski
526a02b8b6 Slight tweak to printing again 2025-09-11 11:44:58 -04:00
Matt Nadareski
658c7a1c3b Add another safeguard? 2025-09-11 11:10:11 -04:00
Matt Nadareski
af84474795 Fix invalid base relocation table parsing 2025-09-11 10:58:15 -04:00
Matt Nadareski
42913c6732 Invalid export should be null, not empty 2025-09-11 10:49:01 -04:00
Matt Nadareski
2cdf544518 Fix an oddly-reading format 2025-09-11 10:45:17 -04:00
Matt Nadareski
652ec58238 Fix certificate table info printing 2025-09-11 10:41:09 -04:00
Matt Nadareski
f8531daa5c Ensure overlay accounts for certificates properly 2025-09-11 10:40:09 -04:00
Matt Nadareski
e9e89b0b43 This has been consistently wrong 2025-09-11 10:33:10 -04:00
Matt Nadareski
55e788a894 Ignore invalid certificate entries 2025-09-11 10:21:51 -04:00
Matt Nadareski
b28bb93ccb Handle non-section data with valid RVA 2025-09-11 10:11:05 -04:00
Matt Nadareski
367aab0f83 Add placeholder for figuring something out later 2025-09-11 09:59:42 -04:00
Matt Nadareski
9dcf3b9e0a The offset needs to be passed all the way 2025-09-11 09:42:48 -04:00
Matt Nadareski
3c514110ce The offset needs to be passed fully 2025-09-11 09:29:46 -04:00
Matt Nadareski
c9b0c2dace Deliberately don't retain position 2025-09-11 09:27:56 -04:00
Matt Nadareski
d575b6977e Correctly parse resource data 2025-09-11 09:21:31 -04:00
Matt Nadareski
a00e6a5e2d Start cleaning up resource parsing more 2025-09-11 09:09:56 -04:00
Matt Nadareski
1b9ae83e8c Don't pad most tables to aligned size 2025-09-11 08:35:49 -04:00
Matt Nadareski
8b91eb1caf Bound the import and export tables 2025-09-11 08:33:59 -04:00
Matt Nadareski
2a6a7b5e9a Pass in the correct data 2025-09-11 08:14:24 -04:00
Matt Nadareski
a85943866e Start using table data only in already-bounded tables 2025-09-11 08:12:27 -04:00
Matt Nadareski
797fb519c1 Pass table data in, mostly unused 2025-09-11 07:49:17 -04:00
Matt Nadareski
3ba9d56363 Read table data directly 2025-09-11 07:44:28 -04:00
Matt Nadareski
04cd4e4056 Start wiring through size bounding on table reads 2025-09-11 07:41:17 -04:00
Matt Nadareski
348e170654 There 2025-09-10 21:54:10 -04:00
Matt Nadareski
f5a4ca6276 Finally figure out what I was doing 2025-09-10 21:37:05 -04:00
Matt Nadareski
672c010aa7 Fix a stupid issue 2025-09-10 21:04:09 -04:00
Matt Nadareski
2459d88951 Found the real issue 2025-09-10 20:46:32 -04:00
Matt Nadareski
350d1c8d31 I guess this can be null? 2025-09-10 20:29:26 -04:00
Matt Nadareski
98a3842a3e Fixx off-by-one error 2025-09-10 20:26:17 -04:00
Matt Nadareski
b52a4469ee Remove alignment, add TODO and comments 2025-09-10 11:21:34 -04:00
Matt Nadareski
e3143e21ba Fix comment to be more accurate 2025-09-10 11:18:53 -04:00
Matt Nadareski
1bf2181fd3 Make check a little nicer 2025-09-09 18:56:50 -04:00
Matt Nadareski
1460635aab Move hidden resources parsing to make method nicer 2025-09-09 18:52:35 -04:00
Matt Nadareski
935ec00c86 Notes about hidden resources 2025-09-09 17:15:25 -04:00
Matt Nadareski
473b6de09b Slight cleanup 2025-09-09 16:42:50 -04:00
Matt Nadareski
ba75f2ac2c Try to fix weird resource parsing 2025-09-09 14:54:54 -04:00
Matt Nadareski
a230b39fbc Make relocation block parsing safer 2025-09-09 13:51:40 -04:00
Matt Nadareski
8e963ac62a Fix a couple of potential logic bugs 2025-09-09 13:42:36 -04:00
Matt Nadareski
eaaa89847d Rename to pex and nex for readability 2025-09-09 13:11:27 -04:00
Matt Nadareski
ef76166978 Clean up a few more PE things 2025-09-09 13:11:09 -04:00
Matt Nadareski
72912586a1 Clean up COFF symbol table parsing 2025-09-09 12:18:46 -04:00
Matt Nadareski
fb241a4036 Make things easier to read, add some helpers 2025-09-09 09:57:53 -04:00
Matt Nadareski
368c8b0533 Add section table note 2025-09-09 09:37:03 -04:00
Matt Nadareski
4010325e65 Make note from Models 2025-09-09 09:31:53 -04:00
Matt Nadareski
11dd75ad95 Make import table easier to read 2025-09-08 23:21:45 -04:00
Matt Nadareski
d0480a1311 Make export table easier to read 2025-09-08 22:51:46 -04:00
Matt Nadareski
2be33b845d Be even more careful 2025-09-08 22:09:12 -04:00
Matt Nadareski
2ad42e3a0f Seek and ye shall find 2025-09-08 21:41:46 -04:00
Matt Nadareski
5d1f83800b Add SecuROM AddD deserializer 2025-09-08 21:20:47 -04:00
Matt Nadareski
30e89a7943 Clean this up 2025-09-08 21:13:34 -04:00
Matt Nadareski
61f5dc4cf2 Extract even more types of embedded data 2025-09-08 20:08:43 -04:00
Matt Nadareski
d056c179ed Add embedded UHA support 2025-09-08 08:51:40 -04:00
Matt Nadareski
b9c4bfc67e Expand the search window again 2025-09-08 08:17:01 -04:00
Matt Nadareski
6ab5ee0ae0 Add regions here for maybe future work 2025-09-08 08:03:07 -04:00
Matt Nadareski
94c1a86702 Add AssemblyName extension property to PE 2025-09-08 07:56:40 -04:00
Matt Nadareski
af6dd6a7fc Check for BZip2 and XZ in hidden places too 2025-09-08 07:52:41 -04:00
Matt Nadareski
45d4926d4c Toss the filename at the top of the infoprint output 2025-09-07 20:52:02 -04:00
1479 changed files with 95092 additions and 17703 deletions

View File

@@ -1,40 +1,48 @@
name: Build and Test
on:
push:
branches: [ "main" ]
push:
branches: ["main"]
jobs:
build:
runs-on: ubuntu-latest
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
6.0.x
8.0.x
9.0.x
- name: Run tests
run: dotnet test
- name: Run publish script
run: ./publish-nix.sh -d
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Upload to rolling
uses: ncipollo/release-action@v1.14.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
- 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

View File

@@ -3,21 +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: |
6.0.x
8.0.x
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

3
.gitmodules vendored
View File

@@ -1,3 +0,0 @@
[submodule "SabreTools.Serialization/_EXTERNAL/stormlibsharp"]
path = SabreTools.Serialization/_EXTERNAL/stormlibsharp
url = https://github.com/robpaveza/stormlibsharp.git

14
.vscode/launch.json vendored
View File

@@ -1,16 +1,16 @@
{
// 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/net9.0/ExtractionTool.dll",
"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
@@ -24,7 +24,7 @@
"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

View File

@@ -1,7 +1,7 @@
<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>
@@ -10,7 +10,7 @@
<Nullable>enable</Nullable>
<SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<Version>1.9.1</Version>
<Version>2.2.0</Version>
</PropertyGroup>
<!-- Support All Frameworks -->
@@ -20,28 +20,15 @@
<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>
</PropertyGroup>
<!-- Set a build flag for Windows specifically -->
<PropertyGroup Condition="'$(RuntimeIdentifier)'=='win-x86'">
<DefineConstants>$(DefineConstants);WINX86</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(RuntimeIdentifier)'=='win-x64'">
<DefineConstants>$(DefineConstants);WINX64</DefineConstants>
<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\CascLib.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<CopyToPublishDirectory>Always</CopyToPublishDirectory>
<TargetPath>CascLib.dll</TargetPath>
</ContentWithTargetPath>
<ContentWithTargetPath Include="..\SabreTools.Serialization\runtimes\win-x86\native\StormLib.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<CopyToPublishDirectory>Always</CopyToPublishDirectory>
@@ -49,11 +36,6 @@
</ContentWithTargetPath>
</ItemGroup>
<ItemGroup Condition="'$(RuntimeIdentifier)'=='win-x64'">
<ContentWithTargetPath Include="..\SabreTools.Serialization\runtimes\win-x64\native\CascLib.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<CopyToPublishDirectory>Always</CopyToPublishDirectory>
<TargetPath>CascLib.dll</TargetPath>
</ContentWithTargetPath>
<ContentWithTargetPath Include="..\SabreTools.Serialization\runtimes\win-x64\native\StormLib.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<CopyToPublishDirectory>Always</CopyToPublishDirectory>
@@ -66,8 +48,9 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="SabreTools.IO" Version="1.7.2" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="9.0.8" Condition="!$(TargetFramework.StartsWith(`net2`)) AND !$(TargetFramework.StartsWith(`net3`)) AND !$(TargetFramework.StartsWith(`net40`)) AND !$(TargetFramework.StartsWith(`net452`))" />
<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>

View 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;
}
}
}

View File

@@ -1,129 +0,0 @@
using System;
using System.Collections.Generic;
using System.IO;
namespace ExtractionTool
{
/// <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; } = [];
/// <summary>
/// Output path for archive extraction
/// </summary>
public string OutputPath { get; private set; } = string.Empty;
#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 options and paths
for (int index = 0; index < args.Length; index++)
{
string arg = args[index];
switch (arg)
{
case "-?":
case "-h":
case "--help":
return null;
case "-d":
case "--debug":
options.Debug = true;
break;
case "-o":
case "--outdir":
options.OutputPath = index + 1 < args.Length ? args[++index] : string.Empty;
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;
}
// Validate the output path
bool validPath = ValidateExtractionPath(options);
if (!validPath)
return null;
return options;
}
/// <summary>
/// Display help text
/// </summary>
public static void DisplayHelp()
{
Console.WriteLine("Extraction Tool");
Console.WriteLine();
Console.WriteLine("ExtractionTool.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");
Console.WriteLine("-o, --outdir [PATH] Set output path for extraction (required)");
}
/// <summary>
/// Validate the extraction path
/// </summary>
private static bool ValidateExtractionPath(Options options)
{
// Null or empty output path
if (string.IsNullOrEmpty(options.OutputPath))
{
Console.WriteLine("Output directory required for extraction!");
Console.WriteLine();
return false;
}
// Malformed output path or invalid location
try
{
options.OutputPath = Path.GetFullPath(options.OutputPath);
Directory.CreateDirectory(options.OutputPath);
}
catch
{
Console.WriteLine("Output directory could not be created!");
Console.WriteLine();
return false;
}
return true;
}
}
}

View File

@@ -1,249 +1,79 @@
using System;
using System.IO;
using SabreTools.IO.Extensions;
using SabreTools.Serialization.Wrappers;
using System.Collections.Generic;
using ExtractionTool.Features;
using SabreTools.CommandLine;
using SabreTools.CommandLine.Features;
namespace ExtractionTool
{
class Program
public static class Program
{
static void Main(string[] args)
public static void Main(string[] args)
{
#if NET462_OR_GREATER || NETCOREAPP
// Register the codepages
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
#endif
// 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 == 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)
{
ExtractPath(inputPath, options.OutputPath, options.Debug);
}
}
// Standalone Options
case Help help: help.ProcessArgs(args, 0, commandSet); return;
/// <summary>
/// Wrapper to extract data for a single path
/// </summary>
/// <param name="path">File or directory path</param>
/// <param name="outputDirectory">Output directory path</param>
/// <param name="includeDebug">Enable including debug information</param>
private static void ExtractPath(string path, string outputDirectory, bool includeDebug)
{
// 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, outputDirectory, includeDebug);
}
else if (Directory.Exists(path))
{
foreach (string file in IOExtensions.SafeEnumerateFiles(path, "*", SearchOption.AllDirectories))
{
ExtractFile(file, outputDirectory, includeDebug);
}
}
else
{
Console.WriteLine($"{path} does not exist, skipping...");
}
}
/// <summary>
/// Print information for a single file, if possible
/// </summary>
private static void ExtractFile(string file, string outputDirectory, bool includeDebug)
{
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.Seek(0, SeekOrigin.Begin);
}
catch (Exception ex)
{
if (includeDebug) 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(outputDirectory);
// Print the preamble
Console.WriteLine($"Attempting to extract from '{wrapper?.Description() ?? "UNKNOWN"}'");
Console.WriteLine();
switch (wrapper)
{
// 7-zip
case SevenZip sz:
sz.Extract(outputDirectory, includeDebug);
break;
// BFPK archive
case BFPK bfpk:
bfpk.Extract(outputDirectory, includeDebug);
break;
// BSP
case BSP bsp:
bsp.Extract(outputDirectory, includeDebug);
break;
// bzip2
case BZip2 bzip2:
bzip2.Extract(outputDirectory, includeDebug);
break;
// CFB
case CFB cfb:
cfb.Extract(outputDirectory, includeDebug);
break;
// GCF
case GCF gcf:
gcf.Extract(outputDirectory, includeDebug);
break;
// gzip
case GZip gzip:
gzip.Extract(outputDirectory, includeDebug);
break;
// InstallShield Archive V3 (Z)
case InstallShieldArchiveV3 isv3:
isv3.Extract(outputDirectory, includeDebug);
break;
// IS-CAB archive
case InstallShieldCabinet iscab:
iscab.Extract(outputDirectory, includeDebug);
break;
// LZ-compressed file, KWAJ variant
case LZKWAJ kwaj:
kwaj.Extract(outputDirectory, includeDebug);
break;
// LZ-compressed file, QBasic variant
case LZQBasic qbasic:
qbasic.Extract(outputDirectory, includeDebug);
break;
// LZ-compressed file, SZDD variant
case LZSZDD szdd:
szdd.Extract(outputDirectory, includeDebug);
break;
// Microsoft Cabinet archive
case MicrosoftCabinet mscab:
mscab.Extract(outputDirectory, includeDebug);
break;
// MoPaQ (MPQ) archive
case MoPaQ mpq:
mpq.Extract(outputDirectory, includeDebug);
break;
// New Executable
case NewExecutable nex:
nex.Extract(outputDirectory, includeDebug);
break;
// PAK
case PAK pak:
pak.Extract(outputDirectory, includeDebug);
break;
// PFF
case PFF pff:
pff.Extract(outputDirectory, includeDebug);
break;
// PKZIP
case PKZIP pkzip:
pkzip.Extract(outputDirectory, includeDebug);
break;
// Portable Executable
case PortableExecutable pex:
pex.Extract(outputDirectory, includeDebug);
break;
// Quantum
case Quantum quantum:
quantum.Extract(outputDirectory, includeDebug);
break;
// RAR
case RAR rar:
rar.Extract(outputDirectory, includeDebug);
break;
// SGA
case SGA sga:
sga.Extract(outputDirectory, includeDebug);
break;
// Tape Archive
case TapeArchive tar:
tar.Extract(outputDirectory, includeDebug);
break;
// VBSP
case VBSP vbsp:
vbsp.Extract(outputDirectory, includeDebug);
break;
// VPK
case VPK vpk:
vpk.Extract(outputDirectory, includeDebug);
break;
// WAD3
case WAD3 wad:
wad.Extract(outputDirectory, includeDebug);
break;
// xz
case XZ xz:
xz.Extract(outputDirectory, includeDebug);
break;
// XZP
case XZP xzp:
xzp.Extract(outputDirectory, includeDebug);
break;
// Everything else
// Default Behavior
default:
Console.WriteLine("Not a supported extractable file format, skipping...");
Console.WriteLine();
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;
}
}
}

View File

@@ -0,0 +1,278 @@
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 != 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 == 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 == 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 == 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 != null)
builder.AppendLine($"CRC-16 checksum: {crc16}");
if (hashes.TryGetValue(HashType.CRC32, out string? crc32) && crc32 != null)
builder.AppendLine($"CRC-32 checksum: {crc32}");
if (hashes.TryGetValue(HashType.MD2, out string? md2) && md2 != null)
builder.AppendLine($"MD2 hash: {md2}");
if (hashes.TryGetValue(HashType.MD4, out string? md4) && md4 != null)
builder.AppendLine($"MD4 hash: {md4}");
if (hashes.TryGetValue(HashType.MD5, out string? md5) && md5 != null)
builder.AppendLine($"MD5 hash: {md5}");
if (hashes.TryGetValue(HashType.RIPEMD128, out string? ripemd128) && ripemd128 != null)
builder.AppendLine($"RIPEMD-128 hash: {ripemd128}");
if (hashes.TryGetValue(HashType.RIPEMD160, out string? ripemd160) && ripemd160 != null)
builder.AppendLine($"RIPEMD-160 hash: {ripemd160}");
if (hashes.TryGetValue(HashType.SHA1, out string? sha1) && sha1 != null)
builder.AppendLine($"SHA-1 hash: {sha1}");
if (hashes.TryGetValue(HashType.SHA256, out string? sha256) && sha256 != null)
builder.AppendLine($"SHA-256 hash: {sha256}");
if (hashes.TryGetValue(HashType.SHA384, out string? sha384) && sha384 != null)
builder.AppendLine($"SHA-384 hash: {sha384}");
if (hashes.TryGetValue(HashType.SHA512, out string? sha512) && sha512 != null)
builder.AppendLine($"SHA-512 hash: {sha512}");
return builder;
}
catch (Exception ex)
{
Console.WriteLine(Debug ? ex : "[Exception opening file, please try again]");
return null;
}
}
}
}

View File

@@ -1,7 +1,7 @@
<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>
@@ -10,7 +10,7 @@
<Nullable>enable</Nullable>
<SuppressTfmSupportBuildWarnings>true</SuppressTfmSupportBuildWarnings>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<Version>1.9.1</Version>
<Version>2.2.0</Version>
</PropertyGroup>
<!-- Support All Frameworks -->
@@ -20,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>
@@ -32,8 +32,9 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="SabreTools.IO" Version="1.7.2" />
<PackageReference Include="SabreTools.Hashing" Version="1.5.0" />
<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>

View File

@@ -1,141 +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>
/// Output information to file only, skip printing to console
/// </summary>
public bool FileOnly { get; private set; } = false;
/// <summary>
/// Print external file hashes
/// </summary>
public bool Hash { 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 "-c":
case "--hash":
options.Hash = true;
break;
case "-f":
case "--file":
options.FileOnly = 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 <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");
Console.WriteLine("-c, --hash Output file hashes");
Console.WriteLine("-f, --file Print to file only");
#if NETCOREAPP
Console.WriteLine("-j, --json Print info as JSON");
#endif
}
}
}

View File

@@ -1,10 +1,8 @@
using System;
using System.IO;
using System.Text;
using SabreTools.Hashing;
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
{
@@ -12,197 +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 == 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)
{
PrintPathInfo(inputPath, options);
// 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="options">User-defined options</param>
private static void PrintPathInfo(string path, Options options)
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, options);
}
else if (Directory.Exists(path))
{
foreach (string file in IOExtensions.SafeEnumerateFiles(path, "*", SearchOption.AllDirectories))
{
PrintFileInfo(file, options);
}
}
else
{
Console.WriteLine($"{path} does not exist, skipping...");
}
}
/// <summary>
/// Print information for a single file, if possible
/// </summary>
/// <param name="file">File path</param>
/// <param name="options">User-defined options</param>
private static void PrintFileInfo(string file, Options options)
{
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 (options.Hash)
{
var hashBuilder = PrintHashInfo(file, options.Debug);
if (hashBuilder != 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.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;
}
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 (options.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();
}
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;
}
// Only print to console if enabled
if (!options.FileOnly)
Console.WriteLine(builder);
using var sw = new StreamWriter(File.OpenWrite($"{filenameBase}.txt"));
sw.WriteLine(builder.ToString());
sw.Flush();
}
catch (Exception ex)
{
Console.WriteLine(options.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>
/// <param name="debug">Enable debug output</param>
/// <returns>StringBuilder representing the hash information, if possible</returns>
private static StringBuilder? PrintHashInfo(string file, bool debug)
{
// 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 == 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 != null)
builder.AppendLine($"CRC-16 checksum: {crc16}");
if (hashes.TryGetValue(HashType.CRC32, out string? crc32) && crc32 != null)
builder.AppendLine($"CRC-32 checksum: {crc32}");
if (hashes.TryGetValue(HashType.MD2, out string? md2) && md2 != null)
builder.AppendLine($"MD2 hash: {md2}");
if (hashes.TryGetValue(HashType.MD4, out string? md4) && md4 != null)
builder.AppendLine($"MD4 hash: {md4}");
if (hashes.TryGetValue(HashType.MD5, out string? md5) && md5 != null)
builder.AppendLine($"MD5 hash: {md5}");
if (hashes.TryGetValue(HashType.RIPEMD128, out string? ripemd128) && ripemd128 != null)
builder.AppendLine($"RIPEMD-128 hash: {ripemd128}");
if (hashes.TryGetValue(HashType.RIPEMD160, out string? ripemd160) && ripemd160 != null)
builder.AppendLine($"RIPEMD-160 hash: {ripemd160}");
if (hashes.TryGetValue(HashType.SHA1, out string? sha1) && sha1 != null)
builder.AppendLine($"SHA-1 hash: {sha1}");
if (hashes.TryGetValue(HashType.SHA256, out string? sha256) && sha256 != null)
builder.AppendLine($"SHA-256 hash: {sha256}");
if (hashes.TryGetValue(HashType.SHA384, out string? sha384) && sha384 != null)
builder.AppendLine($"SHA-384 hash: {sha384}");
if (hashes.TryGetValue(HashType.SHA512, out string? sha512) && sha512 != null)
builder.AppendLine($"SHA-512 hash: {sha512}");
return builder;
}
catch (Exception ex)
{
Console.WriteLine(debug ? ex : "[Exception opening file, please try again]");
return null;
}
return commandSet;
}
}
}

7
LICENSE Normal file
View 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.

View File

@@ -8,8 +8,8 @@ Find the link to the Nuget package [here](https://www.nuget.org/packages/SabreTo
The following non-project libraries (or ports thereof) are used for file handling:
- [SharpCompress](https://github.com/adamhathcock/sharpcompress) - Common archive format extraction
- [StormLibSharp](https://github.com/robpaveza/stormlibsharp) - MoPaQ extraction [Unused in .NET Framework 2.0/3.5/4.0, non-Windows, and non-x86 builds due to Windows-specific libraries]
- [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:
@@ -26,13 +26,14 @@ For the latest WIP build here: [Rolling Release](https://github.com/SabreTools/S
**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 and quit
-?, -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
```
@@ -40,11 +41,11 @@ Options:
**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.
```
ExtractionTool.exe <options> file|directory ...
```text
ExtractionTool <options> file|directory ...
Options:
-?, -h, --help Display this help text and quit
-?, -h, --help Display this help text
-d, --debug Enable debug mode
-o, --outdir [PATH] Set output path for extraction (required)
```
@@ -54,7 +55,7 @@ Options:
| 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. .NET Framework 4.0 and greater |
| Compound File Binary (CFB) | Only CFB common pieces extractable |
| gzip archive | |
| Half-Life Game Cache File (GCF) | |
| Half-Life Level (BSP) | |
@@ -65,7 +66,7 @@ Options:
| 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) | Currently not working. Windows only. .NET Framework 4.5.2 and above |
| 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 |
@@ -84,23 +85,24 @@ Below is a table representing the various conversion interfaces that are impleme
| 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 |
| --- | --- |
| `IExtractable` | Marks a wrapper as able to be extracted |
| `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
@@ -108,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 |

View 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.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);
SabreTools.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);
}
}
}
}

View 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.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);
}
}
}
}

View 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 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);
@@ -32,17 +33,17 @@ namespace SabreTools.Serialization.Test.CrossModel
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);
@@ -55,9 +56,9 @@ namespace SabreTools.Serialization.Test.CrossModel
/// <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 +77,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 +86,23 @@ 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",
CRC = "XXXXXX",
MD2 = "XXXXXX",
MD4 = "XXXXXX",
MD5 = "XXXXXX",
RIPEMD128 = "XXXXXX",
RIPEMD160 = "XXXXXX",
SHA1 = "XXXXXX",
Merge = "XXXXXX",
Status = "XXXXXX",
@@ -117,7 +122,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 +132,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 +151,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 +159,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 +170,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 +185,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,9 +202,9 @@ 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.Year = "XXXXXX";
@@ -222,7 +227,7 @@ namespace SabreTools.Serialization.Test.CrossModel
gameBase.DipSwitch = [dipswitch];
gameBase.Driver = driver;
return new Models.ClrMamePro.MetadataFile
return new Data.Models.ClrMamePro.MetadataFile
{
ClrMamePro = cmp,
Game = [gameBase],
@@ -232,7 +237,7 @@ namespace SabreTools.Serialization.Test.CrossModel
/// <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,7 +260,7 @@ 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);
@@ -316,7 +321,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 +334,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 +345,17 @@ 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.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.Merge);
Assert.Equal("XXXXXX", rom.Status);
@@ -369,7 +378,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 +392,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 +401,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 +410,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 +423,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 +435,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 +450,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 +459,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 +473,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 +488,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);
@@ -489,4 +498,4 @@ namespace SabreTools.Serialization.Test.CrossModel
Assert.Equal("XXXXXX", driver.Blit);
}
}
}
}

View 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.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,7 +45,7 @@ namespace SabreTools.Serialization.Test.CrossModel
Comment = "XXXXXX",
};
var file = new Models.DosCenter.File
var file = new Data.Models.DosCenter.File
{
Name = "XXXXXX",
Size = "XXXXXX",
@@ -53,13 +54,13 @@ namespace SabreTools.Serialization.Test.CrossModel
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],
@@ -69,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);
@@ -84,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);
@@ -97,7 +98,7 @@ 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);
@@ -107,4 +108,4 @@ namespace SabreTools.Serialization.Test.CrossModel
Assert.Equal("XXXXXX", rom.Date);
}
}
}
}

View 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.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);
}
}
}
}

View File

@@ -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,19 +217,19 @@ 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)
{
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" }] },
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(),
};
}
@@ -236,7 +237,7 @@ namespace SabreTools.Serialization.Test.CrossModel
/// <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 +247,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 +257,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 +267,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 +277,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 +287,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 +297,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 +307,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 +317,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);
}
}
}
}

View 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);
}
}
}
}

View 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 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);
}
}
}
}

View 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 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);
@@ -40,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);
@@ -71,9 +72,9 @@ namespace SabreTools.Serialization.Test.CrossModel
/// <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",
@@ -81,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",
@@ -92,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",
@@ -111,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",
@@ -129,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",
@@ -138,19 +139,23 @@ 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",
CRC = "XXXXXX",
MD2 = "XXXXXX",
MD4 = "XXXXXX",
MD5 = "XXXXXX",
RIPEMD128 = "XXXXXX",
RIPEMD160 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SHA384 = "XXXXXX",
@@ -167,7 +172,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",
@@ -177,7 +182,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",
@@ -186,22 +191,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",
@@ -213,7 +218,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",
@@ -221,9 +226,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";
@@ -255,19 +260,19 @@ namespace SabreTools.Serialization.Test.CrossModel
gameBase.Driver = driver;
gameBase.SoftwareList = [softwarelist];
var subdir = new Models.Logiqx.Dir
var subdir = new Data.Models.Logiqx.Dir
{
Name = "XXXXXX",
Game = [gameBase],
};
var dir = new Models.Logiqx.Dir
var dir = new Data.Models.Logiqx.Dir
{
Name = "XXXXXX",
Subdir = [subdir],
};
return new Models.Logiqx.Datafile
return new Data.Models.Logiqx.Datafile
{
Build = "XXXXXX",
Debug = "XXXXXX",
@@ -281,7 +286,7 @@ namespace SabreTools.Serialization.Test.CrossModel
/// <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);
@@ -304,7 +309,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);
@@ -316,7 +321,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);
@@ -331,7 +336,7 @@ namespace SabreTools.Serialization.Test.CrossModel
/// <summary>
/// Validate a GameBase
/// </summary>
private static void Validate(Models.Logiqx.GameBase? gb, bool nested)
private static void Validate(Data.Models.Logiqx.GameBase? gb, bool nested)
{
Assert.NotNull(gb);
if (nested)
@@ -408,7 +413,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);
@@ -430,7 +435,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);
@@ -443,7 +448,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);
@@ -454,13 +459,17 @@ 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.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);
@@ -480,7 +489,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);
@@ -494,7 +503,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);
@@ -507,7 +516,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);
@@ -516,7 +525,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);
@@ -525,7 +534,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);
@@ -534,7 +543,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);
@@ -550,7 +559,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);
@@ -559,4 +568,4 @@ namespace SabreTools.Serialization.Test.CrossModel
Assert.Equal("XXXXXX", softwarelist.Filter);
}
}
}
}

View 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 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);
}
}
}
}

View 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 RoundTripGameTest()
{
// Get the cross-model serializer
var serializer = new Serialization.CrossModel.Mess();
var serializer = new Mess();
// Build the data
Models.Listxml.Mess m1 = Build(game: true);
Data.Models.Listxml.Mess 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.Mess? newMess = serializer.Deserialize(metadata);
Data.Models.Listxml.Mess? newMess = serializer.Deserialize(metadata);
// Validate the data
Assert.NotNull(newMess);
@@ -33,17 +34,17 @@ namespace SabreTools.Serialization.Test.CrossModel
public void RoundTripMachineTest()
{
// Get the cross-model serializer
var serializer = new Serialization.CrossModel.Mess();
var serializer = new Mess();
// Build the data
Models.Listxml.Mess m1 = Build(game: false);
Data.Models.Listxml.Mess 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.Mess? newMess = serializer.Deserialize(metadata);
Data.Models.Listxml.Mess? newMess = serializer.Deserialize(metadata);
// Validate the data
Assert.NotNull(newMess);
@@ -57,16 +58,16 @@ namespace SabreTools.Serialization.Test.CrossModel
/// <summary>
/// Build model for serialization and deserialization
/// </summary>
private static Models.Listxml.Mess Build(bool game)
private static Data.Models.Listxml.Mess 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.Mess
return new Data.Models.Listxml.Mess
{
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);
}
}
}
}

View 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.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);
}
}
}
}

View 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.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);
}
}
}
}

View 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.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);
}
}
}
}

View 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.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);
}
}
}
}

View 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.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);
}
}
}
}

View File

@@ -0,0 +1,213 @@
using System;
using SabreTools.Data.Extensions;
using SabreTools.Data.Models.ASN1;
using Xunit;
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 = (object?)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 = (object?)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
}
}

View 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
}
}

View 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 AACSTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}

View 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 AppPkgHeaderTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View File

@@ -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 SabreTools.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);
}
}
}
}

View File

@@ -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 SabreTools.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 SabreTools.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(SabreTools.Serialization.Writers.AttractMode.HeaderArrayWithRomname.SequenceEqual(header));
else
Assert.True(Serialization.Serializers.AttractMode.HeaderArrayWithoutRomname.SequenceEqual(header));
Assert.True(SabreTools.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
}
}
}
}
}

View 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 BDPlusTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 BFPKTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 BSPTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 CFBTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 CHDTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 CIATests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 CatalogTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 ClrMameProTests
{
@@ -74,18 +74,18 @@ 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 SabreTools.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);
@@ -99,18 +99,18 @@ namespace SabreTools.Serialization.Test.Deserializers
public void RoundTripGameWithoutQuotesTest()
{
// Get the serializer and deserializer
var deserializer = new Serialization.Deserializers.ClrMamePro();
var serializer = new Serialization.Serializers.ClrMamePro();
var deserializer = new ClrMamePro();
var serializer = new SabreTools.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, quotes: false);
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,18 +124,18 @@ namespace SabreTools.Serialization.Test.Deserializers
public void RoundTripMachineTest()
{
// Get the serializer and deserializer
var deserializer = new Serialization.Deserializers.ClrMamePro();
var serializer = new Serialization.Serializers.ClrMamePro();
var deserializer = new ClrMamePro();
var serializer = new SabreTools.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);
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);
@@ -149,18 +149,18 @@ namespace SabreTools.Serialization.Test.Deserializers
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 SabreTools.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, quotes: false);
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);
@@ -173,9 +173,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",
@@ -194,7 +194,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",
@@ -203,19 +203,23 @@ 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",
CRC = "XXXXXX",
MD2 = "XXXXXX",
MD4 = "XXXXXX",
MD5 = "XXXXXX",
RIPEMD128 = "XXXXXX",
RIPEMD160 = "XXXXXX",
SHA1 = "XXXXXX",
Merge = "XXXXXX",
Status = "XXXXXX",
@@ -235,7 +239,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",
@@ -245,17 +249,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",
@@ -264,7 +268,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",
@@ -272,7 +276,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",
@@ -283,12 +287,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",
@@ -298,14 +302,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",
@@ -315,9 +319,9 @@ 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.Year = "XXXXXX";
@@ -340,7 +344,7 @@ namespace SabreTools.Serialization.Test.Deserializers
gameBase.DipSwitch = [dipswitch];
gameBase.Driver = driver;
return new Models.ClrMamePro.MetadataFile
return new Data.Models.ClrMamePro.MetadataFile
{
ClrMamePro = cmp,
Game = [gameBase],
@@ -350,7 +354,7 @@ namespace SabreTools.Serialization.Test.Deserializers
/// <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);
@@ -373,7 +377,7 @@ 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);
@@ -434,7 +438,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);
@@ -447,7 +451,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);
@@ -458,13 +462,17 @@ 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.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.Merge);
Assert.Equal("XXXXXX", rom.Status);
@@ -487,7 +495,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);
@@ -501,7 +509,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);
@@ -510,7 +518,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);
@@ -519,7 +527,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);
@@ -532,7 +540,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);
@@ -544,7 +552,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);
@@ -559,7 +567,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);
@@ -568,7 +576,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);
@@ -582,7 +590,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);
@@ -597,7 +605,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);
@@ -607,4 +615,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Equal("XXXXXX", driver.Blit);
}
}
}
}

View File

@@ -2,10 +2,10 @@ using System;
using System.IO;
using System.Linq;
using System.Text;
using SabreTools.Serialization.Deserializers;
using SabreTools.Serialization.Readers;
using Xunit;
namespace SabreTools.Serialization.Test.Deserializers
namespace SabreTools.Serialization.Test.Readers
{
public class CueSheetTests
{
@@ -115,4 +115,4 @@ namespace SabreTools.Serialization.Test.Deserializers
#endregion
}
}
}

View File

@@ -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 SabreTools.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,7 +111,7 @@ namespace SabreTools.Serialization.Test.Deserializers
Comment = "XXXXXX",
};
var file = new Models.DosCenter.File
var file = new Data.Models.DosCenter.File
{
Name = "XXXXXX",
Size = "XXXXXX",
@@ -121,13 +120,13 @@ namespace SabreTools.Serialization.Test.Deserializers
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],
@@ -137,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);
@@ -152,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);
@@ -165,7 +164,7 @@ 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);
@@ -175,4 +174,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Equal("XXXXXX XXXXXX", rom.Date);
}
}
}
}

View File

@@ -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 SabreTools.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);
}
}
}
}

View 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 GCFTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 GZipTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View File

@@ -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 SabreTools.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 SabreTools.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 SabreTools.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 SabreTools.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 SabreTools.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 SabreTools.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 SabreTools.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 SabreTools.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 SabreTools.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,19 +291,19 @@ 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)
{
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" }] },
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(),
};
}
@@ -311,7 +311,7 @@ namespace SabreTools.Serialization.Test.Deserializers
/// <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 +321,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 +331,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 +341,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 +351,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 +361,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 +371,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 +381,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 +391,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);
}
}
}
}

View 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);
}
}
}
}

View 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);
}
}
}

View 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 InstallShieldArchiveV3Tests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 InstallShieldCabinetTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View File

@@ -0,0 +1,73 @@
using System.IO;
using System.Linq;
using SabreTools.Serialization.Readers;
using Xunit;
namespace SabreTools.Serialization.Test.Readers
{
public class InstallShieldExecutableFileTests
{
[Fact]
public void NullArray_Null()
{
byte[]? data = null;
int offset = 0;
var deserializer = new InstallShieldExecutableFile();
var actual = deserializer.Deserialize(data, offset);
Assert.Null(actual);
}
[Fact]
public void EmptyArray_Null()
{
byte[]? data = [];
int offset = 0;
var deserializer = new InstallShieldExecutableFile();
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 InstallShieldExecutableFile();
var actual = deserializer.Deserialize(data, offset);
Assert.Null(actual);
}
[Fact]
public void NullStream_Null()
{
Stream? data = null;
var deserializer = new InstallShieldExecutableFile();
var actual = deserializer.Deserialize(data);
Assert.Null(actual);
}
[Fact]
public void EmptyStream_Null()
{
Stream? data = new MemoryStream([]);
var deserializer = new InstallShieldExecutableFile();
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 InstallShieldExecutableFile();
var actual = deserializer.Deserialize(data);
Assert.Null(actual);
}
}
}

View 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 LZKWAJTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View File

@@ -1,12 +1,12 @@
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 LZQBasicTests
{
[Fact]
public void NullArray_Null()
@@ -71,4 +71,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 LZSZDDTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 LinearExecutableTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View File

@@ -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 SabreTools.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);
}
}
}
}

View File

@@ -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 SabreTools.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 SabreTools.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);
}
}
}
}

View File

@@ -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 SabreTools.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 SabreTools.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,23 @@ 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",
CRC = "XXXXXX",
MD2 = "XXXXXX",
MD4 = "XXXXXX",
MD5 = "XXXXXX",
RIPEMD128 = "XXXXXX",
RIPEMD160 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SHA384 = "XXXXXX",
@@ -234,7 +237,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 +247,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 +256,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 +283,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 +291,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 +325,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 +339,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 +362,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 +374,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 +389,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 +463,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 +485,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 +498,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 +509,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 +539,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 +553,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 +566,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 +575,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 +584,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 +593,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 +609,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 +618,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Equal("XXXXXX", softwarelist.Filter);
}
}
}
}

View 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 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 SabreTools.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 SabreTools.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);
}
}
}
}

View 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 MSDOSTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 MessTests
{
@@ -74,18 +74,18 @@ namespace SabreTools.Serialization.Test.Deserializers
public void RoundTripGameTest()
{
// Get the serializer and deserializer
var deserializer = new Serialization.Deserializers.Mess();
var serializer = new Serialization.Serializers.Mess();
var deserializer = new Mess();
var serializer = new SabreTools.Serialization.Writers.Mess();
// Build the data
Models.Listxml.Mess m1 = Build(game: true);
Data.Models.Listxml.Mess m1 = Build(game: true);
// Serialize to generic model
Stream? metadata = serializer.Serialize(m1);
Assert.NotNull(metadata);
// Serialize to stream
Models.Listxml.Mess? newMess = deserializer.Deserialize(metadata);
Data.Models.Listxml.Mess? newMess = deserializer.Deserialize(metadata);
// Validate the data
Assert.NotNull(newMess);
@@ -100,18 +100,18 @@ namespace SabreTools.Serialization.Test.Deserializers
public void RoundTripMachineTest()
{
// Get the serializer and deserializer
var deserializer = new Serialization.Deserializers.Mess();
var serializer = new Serialization.Serializers.Mess();
var deserializer = new Mess();
var serializer = new SabreTools.Serialization.Writers.Mess();
// Build the data
Models.Listxml.Mess m1 = Build(game: false);
Data.Models.Listxml.Mess m1 = Build(game: false);
// Serialize to generic model
Stream? metadata = serializer.Serialize(m1);
Assert.NotNull(metadata);
// Serialize to stream
Models.Listxml.Mess? newMess = deserializer.Deserialize(metadata);
Data.Models.Listxml.Mess? newMess = deserializer.Deserialize(metadata);
// Validate the data
Assert.NotNull(newMess);
@@ -125,16 +125,16 @@ namespace SabreTools.Serialization.Test.Deserializers
/// <summary>
/// Build model for serialization and deserialization
/// </summary>
private static Models.Listxml.Mess Build(bool game)
private static Data.Models.Listxml.Mess 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.Mess
return new Data.Models.Listxml.Mess
{
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);
}
}
}
}

View 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 MicrosoftCabinetTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 MoPaQTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 N3DSTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 NCFTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 NewExecutableTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 NitroTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View File

@@ -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 SabreTools.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);
}
}
}
}

View File

@@ -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 SabreTools.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);
}
}
}
}

View 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 PAKTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 PFFTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 PICTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 PKZIPTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 PlayJAudioTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 PlayJPlaylistTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 PortableExecutableTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 QuantumTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View File

@@ -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 SabreTools.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);
}
}
}
}

View 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 SFBTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 SFOTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 SGATests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View File

@@ -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 SabreTools.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 SabreTools.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(SabreTools.Serialization.Writers.SeparatedValue.HeaderArrayExtended.SequenceEqual(header));
else
Assert.True(Serialization.Serializers.SeparatedValue.HeaderArrayStandard.SequenceEqual(header));
Assert.True(SabreTools.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);
@@ -239,7 +239,7 @@ namespace SabreTools.Serialization.Test.Deserializers
/// <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);
@@ -273,7 +273,7 @@ namespace SabreTools.Serialization.Test.Deserializers
/// <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);
@@ -305,4 +305,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Equal("XXXXXX", row.Status);
}
}
}
}

View File

@@ -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 SabreTools.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);
}
}
}
}

View 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 TapeArchiveTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 VBSPTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 VPKTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 WAD3Tests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 WiseOverlayHeaderTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 WiseScriptTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View 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 WiseSectionHeaderTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View File

@@ -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);
}
}
}
}

View 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 XZPTests
{
@@ -70,4 +70,4 @@ namespace SabreTools.Serialization.Test.Deserializers
Assert.Null(actual);
}
}
}
}

View File

@@ -0,0 +1,73 @@
using System.IO;
using System.Linq;
using SabreTools.Serialization.Readers;
using Xunit;
namespace SabreTools.Serialization.Test.Readers
{
public class XZTests
{
[Fact]
public void NullArray_Null()
{
byte[]? data = null;
int offset = 0;
var deserializer = new XZ();
var actual = deserializer.Deserialize(data, offset);
Assert.Null(actual);
}
[Fact]
public void EmptyArray_Null()
{
byte[]? data = [];
int offset = 0;
var deserializer = new XZ();
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 XZ();
var actual = deserializer.Deserialize(data, offset);
Assert.Null(actual);
}
[Fact]
public void NullStream_Null()
{
Stream? data = null;
var deserializer = new XZ();
var actual = deserializer.Deserialize(data);
Assert.Null(actual);
}
[Fact]
public void EmptyStream_Null()
{
Stream? data = new MemoryStream([]);
var deserializer = new XZ();
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 XZ();
var actual = deserializer.Deserialize(data);
Assert.Null(actual);
}
}
}

View File

@@ -1,7 +1,7 @@
using SabreTools.Serialization.Deserializers;
using SabreTools.Serialization.Readers;
using Xunit;
namespace SabreTools.Serialization.Test.Deserializers
namespace SabreTools.Serialization.Test.Readers
{
public class XeMIDTests
{
@@ -35,4 +35,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