1515
1616#include < TestFramework/TestFramework.h>
1717
18- int main () {
19- // todo add all tests
20- tfw::TestFramework::getInstance ()->addTest (READ_OBJECT_FILE, " Read input object" , [](const tfw::test::util::TestOutputLogger &logger) {
21- std::ifstream input (" input/JOSTestClass.obj" );
22- input.exceptions (std::ios::badbit | std::ios::eofbit);
23-
24- if (!input.is_open ()) {
25- throw std::runtime_error (" nah" );
26- }
27-
28- javaobject::stream::ObjectInputStream ois (input);
29- auto obj = ois.readObject ();
30- });
31-
32- tfw::TestFramework::getInstance ()->addTest (READ_NULL_OBJECT_FILE, " Read null input object" , [](const tfw::test::util::TestOutputLogger &logger) {
33- std::ifstream input (" input/JOSTestNull.obj" );
34- input.exceptions (std::ios::badbit | std::ios::eofbit);
35-
36- if (!input.is_open ()) {
37- throw std::runtime_error (" nah" );
38- }
18+ std::shared_ptr<javaobject::type::object::IObject> readObject (tfw::test::logging::loggers::ITestLogger &logger, const std::string &path) {
19+ std::ifstream input (path);
20+ input.exceptions (std::ios::badbit | std::ios::eofbit);
3921
40- javaobject::stream::ObjectInputStream ois (input);
41- auto obj = ois.readObject ();
22+ if (!input.is_open ()) {
23+ throw std::system_error (std::make_error_code (std::errc::no_such_file_or_directory));
24+ }
4225
43- return tfw::test::result::TestResult (obj->instanceOf <javaobject::type::object::NullObject>());
44- });
26+ logger << " Hello, world!" << std::endl;
4527
46- tfw::TestFramework::getInstance ()-> addTest (READ_ARRAY_OBJECT_FILE, " Read array input object " , []( const tfw::test::util::TestOutputLogger &logger) {
47- std::ifstream input ( " input/JOSTestArray.obj " );
48- input. exceptions (std::ios::badbit | std::ios::eofbit);
28+ javaobject::stream::ObjectInputStream ois (input);
29+ return ois. readObject ( );
30+ }
4931
50- if (!input.is_open ()) {
51- throw std::runtime_error (" nah" );
52- }
32+ tfw::test::result::TestResult readObjectTest (tfw::test::logging::loggers::ITestLogger &logger, const std::string &path) {
33+ const auto obj = readObject (logger, path);
5334
54- javaobject::stream::ObjectInputStream ois (input );
55- auto obj = ois. readObject ();
35+ return tfw::test::result::TestResult ( true , obj-> toString () );
36+ }
5637
57- return tfw::test::result::TestResult (obj->instanceOf <javaobject::type::object::types::ArrayObject>());
58- });
38+ template <typename T>
39+ requires std::is_base_of_v<javaobject::type::object::IObject, T>
40+ tfw::test::result::TestResult readObjectTestRequireInstanceOf (tfw::test::logging::loggers::ITestLogger &logger, const std::string &path) {
41+ const auto obj = readObject (logger, path);
5942
60- tfw::TestFramework::getInstance ()->addTest (READ_ARRAY_OBJECT_FILE_WITH_EXTRA_DATA, " Read array + extra data input object" , [](const tfw::test::util::TestOutputLogger &logger) {
61- std::ifstream input (" input/JOSTestArrayWithExtraData.obj" );
62- input.exceptions (std::ios::badbit | std::ios::eofbit);
43+ return tfw::test::result::TestResult (obj->instanceOf <T>(), obj->toString ());
44+ }
6345
64- if (!input.is_open ()) {
65- throw std::runtime_error (" nah" );
66- }
46+ int main (const int argv, char *argc[]) {
47+ tfw::TestFramework t = tfw::TestFramework::fromArgs (argv, argc);
6748
68- javaobject::stream::ObjectInputStream ois (input);
69- auto dat = ois.readObject ();
70- auto array = ois.readObject ();
71-
72- return tfw::test::result::TestResult (array->instanceOf <javaobject::type::object::types::ArrayObject>());
73- });
49+ // todo add all tests
50+ t.addTest (READ_OBJECT_FILE, " Read data class object" , readObjectTest, " input/JOSDataClass.obj" );
51+ t.addTest (READ_SUBCLASSED_CLASS_OBJECT_FILE, " Read class object with subclass fields" , readObjectTest, " input/JOSSubclassedClass.obj" );
52+ t.addTest (READ_NULL_OBJECT_FILE, " Read null object" , readObjectTestRequireInstanceOf<javaobject::type::object::NullObject>, " input/JOSNullObject.obj" );
53+
54+ t.addTest (READ_EXTERNALIZABLE_CLASS_OBJECT_FILE, " Read externalizable class object" , readObjectTest, " input/JOSExternalizableClass.obj" );
55+ t.addTest (READ_EXTERNALIZABLE_EXTRA_DATA_CLASS_OBJECT_FILE, " Read externalizable class object with extra data" , readObjectTest, " input/JOSExternalizableWithExtraDataClass.obj" );
56+ t.addTest (READ_EMPTY_EXTERNALIZABLE_CLASS_OBJECT_FILE, " Read empty externalizable class object" , readObjectTest, " input/JOSEmptyExternalizableClass.obj" );
57+
58+ t.addTest (READ_ARRAY_OBJECT_FILE, " Read array object" , readObjectTest, " input/JOSArrayClass.obj" );
59+ t.addTest (READ_NESTED_ARRAY_OBJECT_FILE, " Read nested array object" , readObjectTest, " input/JOSNestedArrayClass.obj" );
60+
61+ t.addTest (READ_POLYMORPHIC_OBJECT_FILE, " Read polymorphic class object" , readObjectTest, " input/JOSPolymorphicClass.obj" );
62+ t.addTest (READ_ENUM_OBJECT_FILE, " Read enum object" , readObjectTest, " input/JOSEnumClass.obj" );
63+
64+ t.addTest (READ_CUSTOM_UID_OBJECT_FILE, " Read object with custom serialVersionUid" , readObjectTest, " input/JOSHasCustomSvUIDClass.obj" );
65+ t.addTest (READ_CLASS_OBJECT_WITH_LONG_FIELD_NAME, " Read class object with long field name" , readObjectTest, " input/JOSClassWithLongFieldName.obj" );
66+ t.addTest (READ_TORTURE_CLASS_OBJECT, " Read torture object" , readObjectTest, " input/JOSTortureClass.obj" );
67+
68+ // t.addTest(READ_ARRAY_OBJECT_FILE_WITH_EXTRA_DATA, "Read array + extra data input object", [](const tfw::test::util::TestOutputLogger *logger) {
69+ // std::ifstream input("input/JOSTestArrayWithExtraData.obj");
70+ // input.exceptions(std::ios::badbit | std::ios::eofbit);
71+ //
72+ // if (!input.is_open()) {
73+ // throw std::runtime_error("nah");
74+ // }
75+ //
76+ // javaobject::stream::ObjectInputStream ois(input);
77+ // auto dat = ois.readObject();
78+ // auto array = ois.readObject();
79+ //
80+ // return tfw::test::result::TestResult(array->instanceOf<javaobject::type::object::types::ArrayObject>());
81+ // });
7482
7583 // TODO: Re-serialize read object in WRITE_MINECRAFT_OBJECT_FILE
76- tfw::TestFramework::getInstance ()-> addTest (READ_MINECRAFT_OBJECT_FILE, " Read Minecraft object" , [](const tfw::test::util::TestOutputLogger & logger) {
77- std::ifstream input (" input/MinecraftJOSTestClass.obj" );
78- input.exceptions (std::ios::badbit | std::ios::eofbit);
79-
80- if (!input.is_open ()) {
81- throw std::runtime_error (" nah" );
82- }
83-
84- javaobject::stream::ObjectInputStream ois (input);
85- auto obj = ois.readObject ();
86- });
87-
88- tfw::TestFramework::getInstance ()-> run ();
84+ // t. addTest(READ_MINECRAFT_OBJECT_FILE, "Read Minecraft object", [](const tfw::test::util::TestOutputLogger * logger) {
85+ // std::ifstream input("input/MinecraftJOSTestClass.obj");
86+ // input.exceptions(std::ios::badbit | std::ios::eofbit);
87+ //
88+ // if (!input.is_open()) {
89+ // throw std::runtime_error("nah");
90+ // }
91+ //
92+ // javaobject::stream::ObjectInputStream ois(input);
93+ // auto obj = ois.readObject();
94+ // });
95+
96+ t. run ();
8997
9098 return 0 ;
9199}
0 commit comments