diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 1fe18ae7..81be5451 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -766,6 +766,8 @@ Fix all items spawning above player head Fix items falling below terrain Fix gridded data cell manager saving attached items on realm save Fix render signals caching between frames (not reseting global flags per usual) +Capture image from opengl to pixel-check +Add ui tests # TODO @@ -778,11 +780,6 @@ Ability to fully reload game engine state without exiting client - Back out to main menu and load a new level without any values persisting - Receive a teleport packet from server and flush all game state before requesting state from server again -Unit Testing - - Capture image from opengl to pixel-check - - Ability to click through the ui via scripts - - Add ui tests - Bug Fixes - Fix hitbox placement does not scale with entity scale on server - Fix not all grass tiles update when updating a nearby voxel (ie it doesn't go into negative coordinates to scan for foliage updates) diff --git a/src/main/java/electrosphere/net/client/protocol/CombatProtocol.java b/src/main/java/electrosphere/net/client/protocol/CombatProtocol.java index a5c00009..961eec8b 100644 --- a/src/main/java/electrosphere/net/client/protocol/CombatProtocol.java +++ b/src/main/java/electrosphere/net/client/protocol/CombatProtocol.java @@ -5,7 +5,6 @@ import org.joml.Vector3d; import electrosphere.client.collision.ClientHitboxCollision; import electrosphere.engine.Globals; import electrosphere.entity.Entity; -import electrosphere.logger.LoggerInterface; import electrosphere.net.parser.net.message.CombatMessage; import electrosphere.net.template.ClientProtocolTemplate; @@ -28,8 +27,6 @@ public class CombatProtocol implements ClientProtocolTemplate { Entity receiverEntity = Globals.clientSceneWrapper.getEntityFromServerId(message.getreceiverEntityID()); if(senderEntity != null && receiverEntity != null){ ClientHitboxCollision.handleHitboxCollision(senderEntity, receiverEntity, position, message.gethitboxType(), message.gethurtboxType()); - } else { - LoggerInterface.loggerEngine.WARNING("Received collision event for entities that are undefined! " + senderEntity + " " + receiverEntity); } } break; } diff --git a/src/test/java/electrosphere/renderer/ui/elements/ButtonTests.java b/src/test/java/electrosphere/renderer/ui/elements/ButtonTests.java new file mode 100644 index 00000000..085c2bdf --- /dev/null +++ b/src/test/java/electrosphere/renderer/ui/elements/ButtonTests.java @@ -0,0 +1,26 @@ +package electrosphere.renderer.ui.elements; +import electrosphere.menu.WindowUtils; +import electrosphere.test.annotations.IntegrationTest; +import electrosphere.test.template.UITestTemplate; +import electrosphere.test.testutils.TestEngineUtils; + +/** + * Tests the button ui component + */ +public class ButtonTests extends UITestTemplate { + + @IntegrationTest + public void test_Create(){ + //setup + this.setupBlankView(); + WindowUtils.replaceMainMenuContents(Button.createButton("test", () -> {})); + + + //wait for ui updates + TestEngineUtils.flush(); + TestEngineUtils.simulateFrames(1); + + this.checkRender("Basic", "./test/java/renderer/ui/elements/button1.png"); + } + +} diff --git a/src/test/java/electrosphere/renderer/ui/elements/ImagePanelTests.java b/src/test/java/electrosphere/renderer/ui/elements/ImagePanelTests.java new file mode 100644 index 00000000..cfda24f1 --- /dev/null +++ b/src/test/java/electrosphere/renderer/ui/elements/ImagePanelTests.java @@ -0,0 +1,26 @@ +package electrosphere.renderer.ui.elements; +import electrosphere.menu.WindowUtils; +import electrosphere.test.annotations.IntegrationTest; +import electrosphere.test.template.UITestTemplate; +import electrosphere.test.testutils.TestEngineUtils; + +/** + * Tests the image panel ui component + */ +public class ImagePanelTests extends UITestTemplate { + + @IntegrationTest + public void test_Create(){ + //setup + this.setupBlankView(); + WindowUtils.replaceMainMenuContents(ImagePanel.createImagePanelAbsolute(0,0,50,50,"Textures/default_diffuse.png")); + + + //wait for ui updates + TestEngineUtils.flush(); + TestEngineUtils.simulateFrames(1); + + this.checkRender("Basic", "./test/java/renderer/ui/elements/imagepanel1.png"); + } + +} diff --git a/src/test/java/electrosphere/renderer/ui/elements/LabelTests.java b/src/test/java/electrosphere/renderer/ui/elements/LabelTests.java new file mode 100644 index 00000000..07c156a3 --- /dev/null +++ b/src/test/java/electrosphere/renderer/ui/elements/LabelTests.java @@ -0,0 +1,26 @@ +package electrosphere.renderer.ui.elements; +import electrosphere.menu.WindowUtils; +import electrosphere.test.annotations.IntegrationTest; +import electrosphere.test.template.UITestTemplate; +import electrosphere.test.testutils.TestEngineUtils; + +/** + * Tests the label ui component + */ +public class LabelTests extends UITestTemplate { + + @IntegrationTest + public void test_Create(){ + //setup + this.setupBlankView(); + WindowUtils.replaceMainMenuContents(Label.createLabel("Test Label")); + + + //wait for ui updates + TestEngineUtils.flush(); + TestEngineUtils.simulateFrames(1); + + this.checkRender("Basic", "./test/java/renderer/ui/elements/label1.png"); + } + +} diff --git a/src/test/java/electrosphere/renderer/ui/elements/TestBoxTests.java b/src/test/java/electrosphere/renderer/ui/elements/TestBoxTests.java new file mode 100644 index 00000000..ae1374b6 --- /dev/null +++ b/src/test/java/electrosphere/renderer/ui/elements/TestBoxTests.java @@ -0,0 +1,27 @@ +package electrosphere.renderer.ui.elements; + +import electrosphere.menu.WindowUtils; +import electrosphere.test.annotations.IntegrationTest; +import electrosphere.test.template.UITestTemplate; +import electrosphere.test.testutils.TestEngineUtils; + +/** + * Tests the text box ui component + */ +public class TestBoxTests extends UITestTemplate { + + @IntegrationTest + public void test_Create(){ + //setup + this.setupBlankView(); + WindowUtils.replaceMainMenuContents(TextBox.createTextBox("test text", false)); + + + //wait for ui updates + TestEngineUtils.flush(); + TestEngineUtils.simulateFrames(1); + + this.checkRender("Basic", "./test/java/renderer/ui/elements/textbox1.png"); + } + +} diff --git a/src/test/java/electrosphere/renderer/ui/elements/TestInputTests.java b/src/test/java/electrosphere/renderer/ui/elements/TestInputTests.java new file mode 100644 index 00000000..917ff048 --- /dev/null +++ b/src/test/java/electrosphere/renderer/ui/elements/TestInputTests.java @@ -0,0 +1,29 @@ +package electrosphere.renderer.ui.elements; + +import electrosphere.menu.WindowUtils; +import electrosphere.test.annotations.IntegrationTest; +import electrosphere.test.template.UITestTemplate; +import electrosphere.test.testutils.TestEngineUtils; + +/** + * Tests the text input ui component + */ +public class TestInputTests extends UITestTemplate { + + @IntegrationTest + public void test_Create(){ + //setup + this.setupBlankView(); + TextInput input = TextInput.createTextInput(); + input.setText("asdf"); + WindowUtils.replaceMainMenuContents(input); + + + //wait for ui updates + TestEngineUtils.flush(); + TestEngineUtils.simulateFrames(1); + + this.checkRender("Basic", "./test/java/renderer/ui/elements/textinput1.png"); + } + +} diff --git a/src/test/java/electrosphere/renderer/ui/elements/ToggleInputTests.java b/src/test/java/electrosphere/renderer/ui/elements/ToggleInputTests.java new file mode 100644 index 00000000..99d68649 --- /dev/null +++ b/src/test/java/electrosphere/renderer/ui/elements/ToggleInputTests.java @@ -0,0 +1,27 @@ +package electrosphere.renderer.ui.elements; + +import electrosphere.menu.WindowUtils; +import electrosphere.test.annotations.IntegrationTest; +import electrosphere.test.template.UITestTemplate; +import electrosphere.test.testutils.TestEngineUtils; + +/** + * Tests the text input ui component + */ +public class ToggleInputTests extends UITestTemplate { + + @IntegrationTest + public void test_Create(){ + //setup + this.setupBlankView(); + WindowUtils.replaceMainMenuContents(ToggleInput.createToggleInput()); + + + //wait for ui updates + TestEngineUtils.flush(); + TestEngineUtils.simulateFrames(1); + + this.checkRender("Basic", "./test/java/renderer/ui/elements/toggleinput1.png"); + } + +} diff --git a/src/test/java/electrosphere/renderer/ui/elements/WindowTest.java b/src/test/java/electrosphere/renderer/ui/elements/WindowTest.java index 44c52feb..56a7b924 100644 --- a/src/test/java/electrosphere/renderer/ui/elements/WindowTest.java +++ b/src/test/java/electrosphere/renderer/ui/elements/WindowTest.java @@ -24,7 +24,7 @@ public class WindowTest extends UITestTemplate { //wait for ui updates TestEngineUtils.flush(); - TestEngineUtils.simulateFrames(60); + TestEngineUtils.simulateFrames(1); // TestRenderingUtils.saveTestRender("./test/java/renderer/ui/elements/window.png"); this.checkRender("Basic", "./test/java/renderer/ui/elements/ui-test.png"); diff --git a/src/test/java/electrosphere/renderer/ui/elements/WordTests.java b/src/test/java/electrosphere/renderer/ui/elements/WordTests.java new file mode 100644 index 00000000..05a95140 --- /dev/null +++ b/src/test/java/electrosphere/renderer/ui/elements/WordTests.java @@ -0,0 +1,27 @@ +package electrosphere.renderer.ui.elements; + +import electrosphere.menu.WindowUtils; +import electrosphere.test.annotations.IntegrationTest; +import electrosphere.test.template.UITestTemplate; +import electrosphere.test.testutils.TestEngineUtils; + +/** + * Tests the text box ui component + */ +public class WordTests extends UITestTemplate { + + @IntegrationTest + public void test_Create(){ + //setup + this.setupBlankView(); + WindowUtils.replaceMainMenuContents(Word.createWord("some word")); + + + //wait for ui updates + TestEngineUtils.flush(); + TestEngineUtils.simulateFrames(1); + + this.checkRender("Basic", "./test/java/renderer/ui/elements/word1.png"); + } + +} diff --git a/test/java/renderer/ui/elements/button1.png b/test/java/renderer/ui/elements/button1.png new file mode 100644 index 00000000..c9ab7b01 Binary files /dev/null and b/test/java/renderer/ui/elements/button1.png differ diff --git a/test/java/renderer/ui/elements/imagepanel1.png b/test/java/renderer/ui/elements/imagepanel1.png new file mode 100644 index 00000000..fa6802d5 Binary files /dev/null and b/test/java/renderer/ui/elements/imagepanel1.png differ diff --git a/test/java/renderer/ui/elements/label1.png b/test/java/renderer/ui/elements/label1.png new file mode 100644 index 00000000..b0a8fc8a Binary files /dev/null and b/test/java/renderer/ui/elements/label1.png differ diff --git a/test/java/renderer/ui/elements/textbox1.png b/test/java/renderer/ui/elements/textbox1.png new file mode 100644 index 00000000..0c54636d Binary files /dev/null and b/test/java/renderer/ui/elements/textbox1.png differ diff --git a/test/java/renderer/ui/elements/textinput1.png b/test/java/renderer/ui/elements/textinput1.png new file mode 100644 index 00000000..ae6d9f86 Binary files /dev/null and b/test/java/renderer/ui/elements/textinput1.png differ diff --git a/test/java/renderer/ui/elements/toggleinput1.png b/test/java/renderer/ui/elements/toggleinput1.png new file mode 100644 index 00000000..1bfd0347 Binary files /dev/null and b/test/java/renderer/ui/elements/toggleinput1.png differ diff --git a/test/java/renderer/ui/elements/word1.png b/test/java/renderer/ui/elements/word1.png new file mode 100644 index 00000000..6d7b716a Binary files /dev/null and b/test/java/renderer/ui/elements/word1.png differ