diff --git a/tests/unit/src/FlxAssert.hx b/tests/unit/src/FlxAssert.hx index 0d5b174a88..1c501493ac 100644 --- a/tests/unit/src/FlxAssert.hx +++ b/tests/unit/src/FlxAssert.hx @@ -59,6 +59,26 @@ class FlxAssert Assert.fail('\nValue\n ${actual}\nwas equal to\n ${expected}\n', info); } + public static function arrayContains(array:Array, item:T, ?msg:String, ?info:PosInfos):Void + { + if (array.contains(item)) + Assert.assertionCount++; + else if (msg != null) + Assert.fail(msg, info); + else + Assert.fail('\nValue\n ${item}\nwas not found in array\n ${array}\n', info); + } + + public static function arrayNotContains(array:Array, item:T, ?msg:String, ?info:PosInfos):Void + { + if (!array.contains(item)) + Assert.assertionCount++; + else if (msg != null) + Assert.fail(msg, info); + else + Assert.fail('\nValue\n ${item}\nwas found in array\n ${array}\n', info); + } + public static function pointsEqual(expected:FlxPoint, actual:FlxPoint, ?msg:String, ?info:PosInfos) { if (expected.equals(actual)) diff --git a/tests/unit/src/flixel/system/frontEnds/InputFrontEndTest.hx b/tests/unit/src/flixel/system/frontEnds/InputFrontEndTest.hx new file mode 100644 index 0000000000..43e6272e59 --- /dev/null +++ b/tests/unit/src/flixel/system/frontEnds/InputFrontEndTest.hx @@ -0,0 +1,70 @@ +package flixel.system.frontEnds; + +import flixel.system.frontEnds.InputFrontEnd; +import flixel.FlxG; +import flixel.input.IFlxInputManager; +import massive.munit.Assert; + +class InputFrontEndTest +{ + var inputs:InputFrontEnd; + + @Before + function before():Void + { + @:privateAccess + inputs = new InputFrontEnd(); + } + + @Test + @:haxe.warning("-WDeprecated") + function testAdd() + { + final input1 = new CustomInputManager(); + inputs.add(input1); + FlxAssert.arrayContains(inputs.list, input1); + + final input2 = new CustomInputManager(); + inputs.add(input2); + FlxAssert.arrayNotContains(inputs.list, input2); + } + + @Test + function testAddUniqueType() + { + final input1 = new CustomInputManager(); + inputs.addUniqueType(input1); + FlxAssert.arrayContains(inputs.list, input1); + + final input2 = new CustomInputManager(); + inputs.addUniqueType(input2); + FlxAssert.arrayNotContains(inputs.list, input2); + } + + @Test + function testAddInput() + { + final input1 = new CustomInputManager(); + inputs.addInput(input1); + FlxAssert.arrayContains(inputs.list, input1); + + final oldLength = inputs.list.length; + // add again + inputs.addInput(input1); + Assert.areEqual(inputs.list.length, oldLength); + + final input2 = new CustomInputManager(); + inputs.addInput(input2); + FlxAssert.arrayContains(inputs.list, input2); + } +} + +class CustomInputManager implements IFlxInputManager +{ + public function new () {} + public function destroy() {} + public function reset():Void {} + function update():Void {} + function onFocus():Void {} + function onFocusLost():Void {} +}