yoyogames / gm-testframework Goto Github PK
View Code? Open in Web Editor NEWRepository for GameMaker's Test Framework
License: Other
Repository for GameMaker's Test Framework
License: Other
BasicDataStructuresStackTestSuite contains 4 facts at the moment, with multiple asserts per fact. This should be broken up into more facts to be more thorough.
BasicDataStructuresStackTestSuite
Currently BasicSurfaceTestSuite features only 2 facts containing many tests within them that could benefit from being split up into their own facts, as well as adding some comments and updating the assert descriptions.
BasicSurfaceTestSuite
BasicAudioTestSuite contains 4 facts at the moment, with multiple asserts per fact. This should be broken up into more facts to be more thorough.
BasicAudioTestSuite
BasicBufferTestSuite currently contains a variety of tests for the base64_encode and base64_decode functions, which have little relation to this TestSuite, and no other clear existing TestSuite they could fit into, so a new BasicBase64TestSuite should be made to put them into.
A test suite should be developed and added to the framework to test the engine's audio emitter functionality, as it is currently missing from the framework.
The project should be up to date with the 2024.6 release.
It should include tests that cover the following parts:
The test suite should be expanded to include missing tests
The project should be up to date with the 2024.6 release.
It should cover the following:
ResourceAudioEffectsTestSuite
BasicDateTimeTestSuite contains 9 facts at the moment, with multiple asserts per fact. This should be broken up into more facts to be more thorough.
BasicDateTimeTestSuite
A test suite should be developed and added to the framework to test all core shader functionality, as this is an area of functionality that is currently missing from the framework.
The project should be up to date with 2024.6 release.
It should include tests that cover the following:
BasicDataTypesTestSuite contains 5 facts at the moment, with multiple asserts per fact. This should be broken up into more facts to be more thorough.
BasicDataTypesTestSuite
Currently BasicMatrixTestSuite features several facts (matrix_build_test, matrix_get_set_test and matrix_stack_test) that contain a number of tests within them that could benefit from being split up into their own facts, as well as adding some comments and updating the assert descriptions.
BasicMatrixTestSuite
A test suite should be developed and added to the framework to test the engine's audio listener functionality, as it is currently missing from the framework.
The project should be up to date with the 2024.6 release.
It should include tests that cover the following parts:
A test suite should be developed and added to the framework to test the engine's audio group functionality, as it is currently missing from the framework.
The project should be up to date with the 2024.6 release.
It should include tests that cover the following parts:
Currently ResourceAudioEffectsTestSuite features several facts that contains a number of tests within them, that could benefit from being split up into their own facts, as well as adding some comments and updating the assert descriptions.
ResourceAudioEffectsTestSuite
During the creation of the basic audio test suite, there was a bug at the time where voices which had finished playing uncompressed sounds were still considered 'active'. Testing the audio gain over time was designed to start a sound, apply gain over time, then check the gain after the sound has ended. This worked at the time, but it was the unintended behaviour, and I was not aware of the bug. Now that it has been fixed, and it made it into the latest beta, the test suite does not work as intended.
This can be fixed by instead of checking the sound's gain after it ended, doing a check on its gain after some time.
Audio gain over time test to work properly
BasicAudioTestSuite
Audio gain over time test
Always
A test suite should be developed and added to the framework to test tilemap functionality, as this is an area of functionality that is currently missing from the framework.
The project should be up to date with 2024.4 release.
It should include facts/theories/testAsyncs that cover the following functions:
These facts/theories/testAsyncs should test the functions in their expected use case, as well as how they handle invalid arguments.
BasicDataStructuresMapTestSuite contains 7 facts at the moment, with multiple asserts per fact. This should be broken up into more facts to be more thorough.
BasicDataStructuresMapTestSuite
Currently BasicScriptTestSuite features one fact (script_execute_ext_test) that contains a number of tests within it that could benefit from being split up into their own facts, as well as adding some comments and updating the assert descriptions.
BasicScriptTestSuite
Currently BasicFiltersEffectsTestSuite features several facts that contains a number of tests within them, that could benefit from being split up into their own facts, as well as adding some comments and updating the assert descriptions.
BasicFiltersEffectsTestSuite
While xUnit.yyp
mentions config.json
among included files, it's missing, while it's crucial to run tests.
GM-TestFramework/projects/xUnit/xUnit.yyp
Line 52 in b8305af
I've tried to change ConfigManager.loadFromFile
function so it logs warning instead of error and returns nothing if file not found, but in most places where config_get("$$xxx$$")
is used, there's no handling of undefined
value to give default one, so whole app still crashes.
Hello.
Do you have plans to unify scripting language of non-GML part of the project? Right now, NodeJS and Python are solving problems that are not so specific that you can't use just one, making distribution easier.
Thank you in advance.
BasicDataStructuresPriorityTestSuite contains 5 facts at the moment, with multiple asserts per fact. This should be broken up into more facts to be more thorough.
BasicDataStructuresPriorityTestSuite
BasicFileTestSuite contains 10 facts at the moment, with multiple asserts per fact. This should be broken up into more facts to be more thorough.
BasicFileTestSuite
Currently BasicJsonTestSuite features several facts that contains a number of tests within them, that could benefit from being split up into their own facts, as well as adding some comments and updating the assert descriptions.
BasicJsonTestSuite
Currently BasicStringTestSuite features several facts that contains a large number of tests within them, that could benefit from being split up into their own facts, as well as adding some comments and updating the assert descriptions.
BasicStringTestSuite
When testing audio_play_sound_ext() function, an emitter is created to be passed in as a parameter, but it does not get freed after the test. This causes issues in the later audio test suites.
Emitter should be freed after the test
BasicAudioTestSuite
Single audio playback functions
Always
BasicDataStructuresListTestSuite contains 7 facts at the moment, with multiple asserts per fact. This should be broken up into more facts to be more thorough.
BasicDataStructuresListTestSuite
Currently ResourceAudioGroupsTestSuite features several facts that contains a number of tests within them, that could benefit from being split up into their own facts, as well as adding some comments and updating the assert descriptions.
ResourceAudioGroupsTestSuite
There was recently an issue, in which string_concat
, and string_join
, were failing under very specific condition - if penultimate argument was a variable name, and last argument was a literal string - YoYoGames/GameMaker-Bugs#6480 .
Basic idea is to extend BasicStringTestSuite
for those functions (and their _ext versions
, to include such specific cases too.
string_concat
, string_concat_ext
- 1st arg is variable, 2nd arg is stringstring_concat
, string_concat_ext
- 1st arg is string, 2nd arg is variablestring_join
, string_join_ext
- 2nd arg is variable, 3rd arg is stringstring_join
, string_join_ext
- 2nd arg is string, 3rd arg is variableCurrently when running the Test Framework, it will get stuck on the fact "Time Sources: Expiry Frames"
in ResourceTimeSourceTestSuite
for a minute until it expires, causing the framework to take significantly longer to run than it would otherwise.
This seems to only occur when ResourceTimeSourceTestSuite
is run after BasicVariableTestSuite
, as when BasicVariableTestSuite
is commented out or moved after, the fact will run and pass as normal.
The exceptions listed in the test results after the test expires suggest the reason it gets stuck is due to the generateRandomConfigWithExpiryFrame()
constructor function not generating a valid struct to be inputted into time_source_create
on line 379 of ResourceTimeSourceTestSuite
, however as far as I can tell there are no errors with the code in generateRandomConfigWithExpiryFrame()
that should cause this.
Where it gets even weirder, is its connection to BasicVariableTestSuite
. Specifically, it seems to be the "builtin_constant_varnames_test"
fact within BasicVariableTestSuite
that causes this issue - commenting out a large amount of the entries in the input
struct within it will stop the issue from happening, despite this seemingly having no connection to ResourceTimeSourceTestSuite
. Additionally, commenting out any set of entries within the input
struct seems to work, as long as it's around over 108 of them, suggesting it's linked somehow to the size of the struct, rather than it's contents:
(^ Had to comment out all the lines in and between these screenshots for it to work)
I haven't been able to pinpoint the exact cause or reproduce the issue outside of the Test Framework yet, but it seems more likely an actual gamemaker bug, rather than a bug with the framework. The main reason it was reported here is because a temporary fix should be put in place to stop the large run time increase this causes.
For now, moving BasicVariableTestSuite
after ResourceTimeSourceTestSuite
should temporarily solve the issue - but this bug should be looked into further to figure out exactly what's causing it.
BasicVariableTestSuite/ResourceTimeSourceTestSuite
"Time Sources: Expiry Frames"/"builtin_constant_varnames_test"
Always
A test suite should be developed and added to the framework to test the engine's audio buffer functionality, as it is currently missing from the framework.
The project should be up to date with the 2024.6 release.
It should include tests that cover the following parts:
A test suite should be developed and added to the framework to test basic aspects of audio functionality, as it is currently missing from the framework.
The project should be up to date with the 2024.6 release.
It should include tests that cover the following parts:
BasicArrayTestSuite contains 32 facts at the moment, with multiple asserts per fact. This should be broken up into more facts to be more thorough.
BasicArrayTestSuite
Currently BasicRandomTestSuite features several facts that contains a number of tests within them, that could benefit from being split up into their own facts, as well as adding some comments and updating the assert descriptions.
BasicRandomTestSuite
Additions
Global variable get names test
A test that checks whether global variables' names are correct once they are added to the list of global variables.
Global variable name count test
A test that checks whether the count of global variables is the correct one, once a bunch of new ones have been added.
Adding more global built-in variables to test
The list of global built-in variables is incomplete in "builtin_constant_varnames_test", the rest of them should be added.
Cleanups
Some of the tests do not clean up / remove the variables that were added to the list of global variables during testing, these should be removed once the test is done.
BasicVariableTestSuite
Global variables get names test
Global variables name count test
Adding more global built-in variables
Cleanups
A test suite should be developed and added to the framework to test the functionality of all gamemaker-specific built-in shader uniforms and constants mentioned on the Shader Constants manual page, as this is an area of functionality that is currently missing from the framework.
These tests were initially intended to be included in the BasicShaderTestSuite proposed in #59 but ended up taking up a sufficiently large amount of an already very large test suite that it made more sense to move them to their own test suite instead, in order to improve readability and granularity of tests.
The project should be up to date with 2024.6 release.
It should include tests that cover the following Gamemaker-specific built-in shader uniforms/constants:
In order to make creating tests for draw functions faster and easier, an object should be created that inherits from objTestAsync, and contains functions that can be used to save whatever has been drawn during a test, and compare it against a saved buffer to validate that it's working successfully.
The object, called something like objTestAsyncDraw, should be able to be used in testAsyncs to allow access to these buffer comparison helper functions.
There should be 2 helper functions: one that creates a surface to begin drawing to, as well as taking in a test name string used to identify files related to the test; and another to stop drawing to that surface, save the surface to a buffer, and compare the buffer against a file using the name supplied in the first function. (It would also be helpful to have this second function output the resulting buffer as a file, as well as the surface as an image file, both using the test name, to allow manual verification, and easy creation of new buffers to compare against.)
A test suite should be developed and added to the framework to test the engine's audio synchronisation functionality, as it is currently missing from the framework.
The project should be up to date with the 2024.6 release.
It should include tests that cover the following parts:
BasicDataStructuresGridTestSuite contains 7 facts at the moment, with multiple asserts per fact. This should be broken up into more facts to be more thorough.
BasicDataStructuresGridTestSuite
Currently BasicBufferTestSuite features several facts that contains a number of tests within them, that could benefit from being split up into their own facts, as well as adding some comments and updating the assert descriptions.
BasicBufferTestSuite
Currently the array of audio assets that get tested are stored as a global variable. The proposed refactor changes this into a function that returns an array of audio assets that are to be tested.
BasicAudioTestSuite
Currently ResourceAudioListenersTestSuite features several facts that contains a number of tests within them, that could benefit from being split up into their own facts, as well as adding some comments and updating the assert descriptions.
ResourceAudioListenersTestSuite
Currently BasicIniTestSuite features only 2 facts containing many tests within them that could benefit from being split up into their own facts, as well as adding some comments and updating the assert descriptions.
BasicIniTestSuite
BasicDataStructuresQueueTestSuite contains 5 facts at the moment, with multiple asserts per fact. This should be broken up into more facts to be more thorough.
BasicDataStructuresQueueTestSuite
Currently ResourceAudioEmittersTestSuite features several facts that contains a number of tests within them, that could benefit from being split up into their own facts, as well as adding some comments and updating the assert descriptions.
ResourceAudioEmittersTestSuite
Additions
Type conversions:
Type checking:
Clean ups
BasicDataTypesTestSuite
As there seems to be bug in name()
when using enums in 2024.6 (their values are returned instead of their name), I've added test which should check if that really occurs for selected runtime.
A simple test of CI when submitting PRs from external forks. This will be a quick, nonsense addition that I will remove later on.
A test suite should be developed and added to the framework to test the engine's audio loop points functionality, as it is currently missing from the framework.
The project should be up to date with the 2024.6 release.
It should include tests that cover the following parts:
I am making a test for my games to see if a object is persistent between rooms, i am trying to see examples in the project but it appear that there is no way to test between rooms.
Hi folks! So the unit test framework you're using in this repo is amazing, and its exactly what I tried spending a few months implementing. Since this one is far more feature-complete, I wanted to formally request a "copy" of this framework that could be installed as a GML extension.
I could try converting this into an extension myself, of course, but I wanted to open this issue first in case there were any plans on YYG's end to give it a shot.
Thanks!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.