]> git.lizzy.rs Git - irrlicht.git/commitdiff
AutomatedTest: improve and run under macOS CI too
authorsfan5 <sfan5@live.de>
Wed, 9 Mar 2022 21:43:35 +0000 (22:43 +0100)
committersfan5 <sfan5@live.de>
Wed, 9 Mar 2022 21:52:11 +0000 (22:52 +0100)
.github/workflows/build.yml
examples/AutomatedTest/main.cpp

index 09d25a5e928787546a87bd0fb2efe24f627e63f5..f50726cf6236d5059b6d5b309c97fd577d2142d0 100644 (file)
@@ -112,5 +112,9 @@ jobs:
 
       - name: Build
         run: |
-          cmake . -DCMAKE_FIND_FRAMEWORK=LAST
+          cmake . -DCMAKE_FIND_FRAMEWORK=LAST -DBUILD_EXAMPLES=1
           make -j3
+
+      - name: Test (headless)
+        run: |
+          ./bin/OSX/AutomatedTest null
index 386e14c84b46d63be27a246ca1cea71af027fa0d..0966892cc7e8aa4ede1b9985806af2c2c26e4cb3 100644 (file)
@@ -3,6 +3,9 @@
 \r
 using namespace irr;\r
 \r
+static IrrlichtDevice *device = nullptr;\r
+static int test_fail = 0;\r
+\r
 static video::E_DRIVER_TYPE chooseDriver(const char *arg_)\r
 {\r
        if (core::stringc(arg_) == "null")\r
@@ -15,6 +18,15 @@ static video::E_DRIVER_TYPE chooseDriver(const char *arg_)
        return video::EDT_OPENGL;\r
 }\r
 \r
+static inline void check(bool ok, const char *msg)\r
+{\r
+       if (!ok)\r
+       {\r
+               test_fail++;\r
+               device->getLogger()->log((core::stringc("FAILED TEST: ") + msg).c_str(), ELL_ERROR);\r
+       }\r
+}\r
+\r
 int main(int argc, char *argv[])\r
 {\r
        SIrrlichtCreationParameters p;\r
@@ -23,10 +35,18 @@ int main(int argc, char *argv[])
        p.Vsync = true;\r
        p.LoggingLevel = ELL_DEBUG;\r
 \r
-       IrrlichtDevice *device = createDeviceEx(p);\r
+       device = createDeviceEx(p);\r
        if (!device)\r
                return 1;\r
 \r
+       {\r
+               u32 total = 0;\r
+               device->getOSOperator()->getSystemMemory(&total, nullptr);\r
+               core::stringc message = core::stringc("Total RAM in MiB: ") + core::stringc(total >> 10);\r
+               device->getLogger()->log(message.c_str(), ELL_INFORMATION);\r
+               check(total > 130 * 1024, "RAM amount");\r
+       }\r
+\r
        device->setWindowCaption(L"Hello World!");\r
        device->setResizable(true);\r
 \r
@@ -46,15 +66,19 @@ int main(int argc, char *argv[])
        const io::path mediaPath = getExampleMediaPath();\r
 \r
        scene::IAnimatedMesh* mesh = smgr->getMesh(mediaPath + "coolguy_opt.x");\r
-       if (!mesh)\r
-               return 1;\r
-       scene::IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode(mesh);\r
-       if (node)\r
+       check(mesh, "mesh loading");\r
+       if (mesh)\r
        {\r
-               node->setMaterialFlag(video::EMF_LIGHTING, false);\r
-               node->setFrameLoop(0, 29);\r
-               node->setAnimationSpeed(30);\r
-               node->setMaterialTexture(0, driver->getTexture(mediaPath + "cooltexture.png"));\r
+               video::ITexture* tex = driver->getTexture(mediaPath + "cooltexture.png");\r
+               check(tex, "texture loading");\r
+               scene::IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode(mesh);\r
+               if (node)\r
+               {\r
+                       node->setMaterialFlag(video::EMF_LIGHTING, false);\r
+                       node->setFrameLoop(0, 29);\r
+                       node->setAnimationSpeed(30);\r
+                       node->setMaterialTexture(0, tex);\r
+               }\r
        }\r
 \r
        smgr->addCameraSceneNode(0, core::vector3df(0,4,5), core::vector3df(0,2,0));\r
@@ -102,12 +126,9 @@ int main(int argc, char *argv[])
                driver->endScene();\r
        }\r
 \r
-       if (core::stringw(L"a") != editbox->getText()) {\r
-               device->getLogger()->log("EditBox text mismatch", ELL_INFORMATION);\r
-               return 1;\r
-       }\r
+       check(core::stringw(L"a") == editbox->getText(), "EditBox text");\r
 \r
        device->getLogger()->log("Done.", ELL_INFORMATION);\r
        device->drop();\r
-       return 0;\r
+       return test_fail > 0 ? 1 : 0;\r
 }\r