adg
adg copied to clipboard
Add unit tests
Unit tests are incredibly valuable when performing refactorings, rewrites, and even general development.
Things to cover:
- Assembly generation
- [ ] Various OS/Architecture combinations (current targets would be x86/x64/ARM; Windows, Linux, Android)
- The generation process itself currently is targeting Windows only, optionally Linux - Android modding test approaches currently modify the APK on the PC
- [ ] Various Unity/IL2CPP versions (ideally one sample for each metadata format, see the Il2CppVersions repo)
- [ ] Renaming for deobfuscation
- [ ] Generation-time xref scans
- [ ] General validity of resulting assemblies as far as netcore is concerned (#44)
- [ ] Various OS/Architecture combinations (current targets would be x86/x64/ARM; Windows, Linux, Android)
- Runtime features
- [ ] Figure out a way to run an IL2CPP GameAssembly without the corresponding Unity game?
- [ ] General functioning of generated assemblies
- [ ] Class injection (on different architectures/OS - does GH Actions have ARM runners?)
- [ ] Assuming any arch is not covered by generation-time xref scanning - that there are any architectures left
- [ ] Delegates conversion
Things to consider:
- Test data (generated GameAssembly/metadata/generated dummy dlls) can be exceedingly big, so put it into a subrepo
- Test execution time should be kept low, so include dummy dlls in test data?
- Include some easy ways to generate new variations of test data for other platforms/unity versions (sample project, sample build scripts? Run IL2CPP converter/compiler without unity editor?)
- No real games in test data, only hand-built sample projects might be limiting, but also not impossible to expand to cover various versions.