]> git.tdb.fi Git - libs/datafile.git/commitdiff
Add a test case for Loader overload resolution
authorMikko Rasa <tdb@tdb.fi>
Mon, 3 Jun 2019 08:15:11 +0000 (11:15 +0300)
committerMikko Rasa <tdb@tdb.fi>
Mon, 3 Jun 2019 08:15:11 +0000 (11:15 +0300)
tests/loader.cpp

index 94bf6879fb055e5a276d3a4ef2db73d2d4c7f9b0..f9694aff4d2cf3b6d01542761590f02273cdd6b7 100644 (file)
@@ -17,6 +17,7 @@ public:
 private:
        void load();
        void int_as_float();
+       void overload();
        void bad_keyword();
        void bad_signature();
 };
@@ -45,6 +46,7 @@ LoaderTests::LoaderTests()
 {
        add(&LoaderTests::load, "Load");
        add(&LoaderTests::int_as_float, "Int -> float");
+       add(&LoaderTests::overload, "Overload resolution");
        add(&LoaderTests::bad_keyword, "Bad keyword").expect_throw<DataFile::data_error>();
        add(&LoaderTests::bad_signature, "Bad signature").expect_throw<DataFile::data_error>();
 }
@@ -83,6 +85,22 @@ void LoaderTests::int_as_float()
        EXPECT_EQUAL(obj.f, 2);
 }
 
+void LoaderTests::overload()
+{
+       const char input[] =
+               "o 1.0;\n"
+               "o 2;\n";
+
+       TestObject obj;
+       IO::Memory mem(input, sizeof(input)-1);
+       DataFile::Parser parser(mem, "-");
+       TestObject::Loader loader(obj);
+       loader.load(parser);
+
+       EXPECT_EQUAL(obj.f, 1.0f);
+       EXPECT_EQUAL(obj.i, 2);
+}
+
 void LoaderTests::bad_keyword()
 {
        const char input[] =
@@ -118,6 +136,8 @@ TestObject::Loader::Loader(TestObject &o):
 {
        add("i", &TestObject::i);
        add("f", &TestObject::f);
+       add("o", &TestObject::i);
+       add("o", &TestObject::f);
        add("s", &TestObject::s);
        add("c", &Loader::func);
 }