You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.6 KiB
94 lines
3.6 KiB
(set-cakelisp-option cakelisp-src-dir "Dependencies/cakelisp/src")
|
|
(add-cakelisp-search-directory "Dependencies/cakelisp/runtime")
|
|
|
|
(import "BuildTools.cake" "ComptimeHelpers.cake" "CHelpers.cake" "Cakelisp.cake")
|
|
|
|
;; We don't actually test anything here; we use comptime to run the tests
|
|
(defun main (&return int)
|
|
(return 0))
|
|
|
|
(defmacro gamelib-run-test (test-name string files array)
|
|
(tokenize-push output
|
|
(scope
|
|
(var files ([] (* (const char))) (token-splice files))
|
|
(Logf "\n===============\n%s\n\n" (token-splice test-name))
|
|
(unless (cakelisp-evaluate-build-execute-files files (array-size files))
|
|
(Logf "error: test %s failed\n" (token-splice test-name))
|
|
(return false))
|
|
(Logf "\n%s succeeded\n" (token-splice test-name))))
|
|
(return true))
|
|
|
|
(defmacro gamelib-build (test-name string files array)
|
|
(tokenize-push output
|
|
(scope
|
|
(var files ([] (* (const char))) (token-splice files))
|
|
(Logf "\n===============\nBuild %s\n\n" (token-splice test-name))
|
|
(unless (cakelisp-evaluate-build-files files (array-size files))
|
|
(return false))))
|
|
(return true))
|
|
|
|
(defun-comptime run-tests (manager (& ModuleManager) module (* Module) &return bool)
|
|
(var platform-config (* (const char))
|
|
(comptime-cond
|
|
('Zig-Windows
|
|
"src/GameLibZigCross.cake")
|
|
('Windows
|
|
"src/Config_Windows.cake")
|
|
(true
|
|
"src/Config_Linux.cake")))
|
|
|
|
;; (var test-minimal bool true)
|
|
(var test-minimal bool false)
|
|
|
|
;; (var test-opengl-only bool true)
|
|
(var test-opengl-only bool false)
|
|
|
|
(var test-ogre bool false)
|
|
;; (var test-ogre bool true)
|
|
|
|
(cond
|
|
(test-minimal
|
|
(gamelib-run-test
|
|
"Auto Test (somewhat minimal)"
|
|
(array platform-config
|
|
"../src/AutoTest.cake" "../src/Introspection.cake"
|
|
"../src/Dictionary.cake" "../src/DynamicArray.cake"
|
|
"../src/TaskSystem.cake" "../src/Image.cake" "../src/DataBundle.cake"
|
|
"../src/TinyCCompiler.cake" "../src/FreeType.cake")))
|
|
|
|
(test-opengl-only
|
|
(gamelib-run-test
|
|
"Auto Test (OpenGL only)"
|
|
(array platform-config
|
|
"../src/AutoTest.cake" "../src/OpenGL.cake")))
|
|
|
|
(true ;; Test everything, which requires user input and takes a while
|
|
(gamelib-run-test
|
|
"Auto Test"
|
|
(array platform-config
|
|
"../src/AutoTest.cake" "../src/SDL.cake" "../src/Math.cake"
|
|
"../src/Aubio.cake" "../src/ImGui.cake" "../src/Dictionary.cake"
|
|
"../src/DynamicArray.cake" "../src/Introspection.cake" "../src/OpenGL.cake"
|
|
"../src/Tracy.cake" "../src/TaskSystem.cake"
|
|
;; Note that Raylib must come first so Image knows not to redefine stb_image implementation
|
|
"../src/Raylib.cake" "../src/Image.cake"
|
|
"../src/DataBundle.cake" "../src/TinyCCompiler.cake" "../src/FreeType.cake"
|
|
"../src/ImGuiAutoColor.cake"
|
|
"../src/ProfilerAutoInstrument.cake"))
|
|
|
|
(when test-ogre
|
|
(gamelib-run-test "Ogre" (array platform-config "src/OgreApp.cake"))
|
|
(gamelib-run-test "SDL Ogre" (array platform-config "src/SDLOgreApp.cake"))
|
|
|
|
(gamelib-run-test "Hot-loader"
|
|
(array platform-config "src/Loader.cake"))
|
|
|
|
(gamelib-build "Vocal Game (hot reload)"
|
|
(array platform-config "src/MakeHotReload.cake" "src/VocalGame.cake"))
|
|
|
|
(gamelib-run-test "Vocal Game (no reload)"
|
|
(array platform-config "src/NoHotReload.cake" "src/VocalGame.cake")))))
|
|
|
|
(Log "\nGameLibTests: All tests succeeded!\n")
|
|
(return true))
|
|
(add-compile-time-hook-module pre-build run-tests)
|
|
|