/** * Catroid: An on-device visual programming system for Android devices * Copyright (C) 2010-2014 The Catrobat Team * (<http://developer.catrobat.org/credits>) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * An additional term exception under section 7 of the GNU Affero * General Public License, version 3, is available at * http://developer.catrobat.org/license_additional_term * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.catrobat.html5player.client; import java.util.ArrayList; import org.catrobat.html5player.client.scripts.BroadcastScript; import com.google.gwt.canvas.client.Canvas; import com.google.gwt.junit.client.GWTTestCase; public class MessageContainerTest extends GWTTestCase { Stage stage; int canvasCoordinateSpaceWidth = 100; int canvasCoordinateSpaceHeight = 100; public MessageContainerTest() { stage = Stage.getInstance(); } @Override public String getModuleName() { return "org.catrobat.html5player.html5player"; } public void gwtSetUp() { Canvas canvas = Canvas.createIfSupported(); canvas.setCoordinateSpaceWidth(canvasCoordinateSpaceWidth); canvas.setCoordinateSpaceHeight(canvasCoordinateSpaceHeight); stage.setCanvas(canvas); } public void gwtTearDown() { stage.setCanvas(null); stage.getSpriteManager().reset(); //important stage.getMessageContainer().clear(); //important } //-------------------------------------------------------------------------- /** * */ public void testAddOnlyMessageGetReceiverOfMessage() { MessageContainer messageContainer = new MessageContainer(); String message = "message for the container"; messageContainer.addMessage(message); assertTrue(messageContainer.getReceiverOfMessage(message).isEmpty()); } /** * */ public void testAddOnlyMessagesGetMessages() { MessageContainer messageContainer = new MessageContainer(); String message1 = "first message for the container"; String message2 = "second message"; String message3 = "third message"; messageContainer.addMessage(message1); messageContainer.addMessage(message2); messageContainer.addMessage(message3); ArrayList<String> messages = new ArrayList<String>(messageContainer.getMessages()); assertEquals(3, messages.size()); assertEquals(message1, messages.get(0)); assertEquals(message2, messages.get(1)); assertEquals(message3, messages.get(2)); } /** * */ public void testAddMessages() { MessageContainer messageContainer = new MessageContainer(); String message1 = "first message for the container"; String message2 = null; String message3 = ""; messageContainer.addMessage(message1); messageContainer.addMessage(message2); messageContainer.addMessage(message3); ArrayList<String> messages = new ArrayList<String>(messageContainer.getMessages()); assertEquals(1, messages.size()); assertEquals(message1, messages.get(0)); } /** * */ public void testAddMessageWithScriptGetReceiverOfMessage() { MessageContainer messageContainer = new MessageContainer(); String spriteName = "Sprite"; Sprite sprite = stage.getSpriteManager().getSprite(spriteName, true); String scriptName = "BroadCastScript"; String message = "broadcast-script message!"; BroadcastScript script = new BroadcastScript(sprite, scriptName, message); messageContainer.addMessage(message, script); assertEquals(script, messageContainer.getReceiverOfMessage(message).get(0)); } /** * */ public void testAddMessageWithScriptsGetReceiverOfMessage() { MessageContainer messageContainer = new MessageContainer(); String spriteName = "Sprite"; Sprite sprite = stage.getSpriteManager().getSprite(spriteName, true); String message = "broadcast-script message!"; String scriptName1 = "BroadCastScript1"; String scriptName2 = "BroadCastScript2"; String scriptName3 = "BroadCastScript3"; BroadcastScript script1 = new BroadcastScript(sprite, scriptName1, message); BroadcastScript script2 = new BroadcastScript(sprite, scriptName2, message); BroadcastScript script3 = new BroadcastScript(sprite, scriptName3, message); messageContainer.addMessage(message, script1); messageContainer.addMessage(message, script2); messageContainer.addMessage(message, script3); assertEquals(3, messageContainer.getReceiverOfMessage(message).size()); assertEquals(script1, messageContainer.getReceiverOfMessage(message).get(0)); assertEquals(script2, messageContainer.getReceiverOfMessage(message).get(1)); assertEquals(script3, messageContainer.getReceiverOfMessage(message).get(2)); } /** * */ public void testAddMessagesWithScriptsGetReceiverOfMessage() { MessageContainer messageContainer = new MessageContainer(); String spriteName = "Sprite"; Sprite sprite = stage.getSpriteManager().getSprite(spriteName, true); String message = "broadcast-script message!"; String message2 = "another broadcast-script message!"; String scriptName1 = "BroadCastScript1"; String scriptName2 = "BroadCastScript2"; String scriptName3 = "BroadCastScript3"; BroadcastScript script1 = new BroadcastScript(sprite, scriptName1, message); BroadcastScript script2 = new BroadcastScript(sprite, scriptName2, message2); BroadcastScript script3 = new BroadcastScript(sprite, scriptName3, message2); messageContainer.addMessage(message, script1); messageContainer.addMessage(message2, script2); messageContainer.addMessage(message2, script3); assertEquals(1, messageContainer.getReceiverOfMessage(message).size()); assertEquals(script1, messageContainer.getReceiverOfMessage(message).get(0)); assertEquals(2, messageContainer.getReceiverOfMessage(message2).size()); assertEquals(script2, messageContainer.getReceiverOfMessage(message2).get(0)); assertEquals(script3, messageContainer.getReceiverOfMessage(message2).get(1)); } /** * */ public void testAddInvalidMessagesWithScripts() { MessageContainer messageContainer = new MessageContainer(); String spriteName = "Sprite"; Sprite sprite = stage.getSpriteManager().getSprite(spriteName, true); String message = ""; String message2 = null; String scriptName1 = "BroadCastScript1"; String scriptName2 = "BroadCastScript2"; String scriptName3 = "BroadCastScript3"; BroadcastScript script1 = new BroadcastScript(sprite, scriptName1, message); BroadcastScript script2 = new BroadcastScript(sprite, scriptName2, message2); BroadcastScript script3 = new BroadcastScript(sprite, scriptName3, message2); messageContainer.addMessage(message, script1); messageContainer.addMessage(message2, script2); messageContainer.addMessage(message2, script3); assertTrue(messageContainer.getReceiverOfMessage(message).isEmpty()); assertTrue(messageContainer.getReceiverOfMessage(message2).isEmpty()); } /** * */ public void testDeleteReceiverOfMessage() { MessageContainer messageContainer = new MessageContainer(); String spriteName = "Sprite"; Sprite sprite = stage.getSpriteManager().getSprite(spriteName, true); String message = "broadcast-script message!"; String message2 = "another broadcast-script message!"; String scriptName1 = "BroadCastScript1"; String scriptName2 = "BroadCastScript2"; String scriptName3 = "BroadCastScript3"; BroadcastScript script1 = new BroadcastScript(sprite, scriptName1, message); BroadcastScript script2 = new BroadcastScript(sprite, scriptName2, message2); BroadcastScript script3 = new BroadcastScript(sprite, scriptName3, message2); messageContainer.addMessage(message, script1); messageContainer.addMessage(message2, script2); messageContainer.addMessage(message2, script3); // messageContainer.deleteReceiverScript(message, script1); assertTrue(messageContainer.getReceiverOfMessage(message).isEmpty()); assertEquals(2, messageContainer.getReceiverOfMessage(message2).size()); assertEquals(script2, messageContainer.getReceiverOfMessage(message2).get(0)); assertEquals(script3, messageContainer.getReceiverOfMessage(message2).get(1)); // messageContainer.deleteReceiverScript(message2, script2); assertEquals(1, messageContainer.getReceiverOfMessage(message2).size()); assertEquals(script3, messageContainer.getReceiverOfMessage(message2).get(0)); // messageContainer.deleteReceiverScript(message2, script3); assertEquals(2, messageContainer.getMessages().size()); } /** * */ public void testDeleteReceiverOfMessageInvalidParameters() { MessageContainer messageContainer = new MessageContainer(); String spriteName = "Sprite"; Sprite sprite = stage.getSpriteManager().getSprite(spriteName, true); String message = "broadcast-script message!"; String message2 = "another broadcast-script message!"; String scriptName1 = "BroadCastScript1"; String scriptName2 = "BroadCastScript2"; String scriptName3 = "BroadCastScript3"; BroadcastScript script1 = new BroadcastScript(sprite, scriptName1, message); BroadcastScript script2 = new BroadcastScript(sprite, scriptName2, message2); BroadcastScript script3 = new BroadcastScript(sprite, scriptName3, message2); messageContainer.addMessage(message, script1); messageContainer.addMessage(message2, script2); messageContainer.addMessage(message2, script3); // messageContainer.deleteReceiverScript(null, script1); messageContainer.deleteReceiverScript("", script1); assertEquals(1, messageContainer.getReceiverOfMessage(message).size()); assertEquals(2, messageContainer.getReceiverOfMessage(message2).size()); assertEquals(script2, messageContainer.getReceiverOfMessage(message2).get(0)); assertEquals(script3, messageContainer.getReceiverOfMessage(message2).get(1)); //message and script don't belong together messageContainer.deleteReceiverScript(message2, script1); assertEquals(1, messageContainer.getReceiverOfMessage(message).size()); assertEquals(2, messageContainer.getReceiverOfMessage(message2).size()); assertEquals(script2, messageContainer.getReceiverOfMessage(message2).get(0)); assertEquals(script3, messageContainer.getReceiverOfMessage(message2).get(1)); // messageContainer.deleteReceiverScript(message2, null); assertEquals(1, messageContainer.getReceiverOfMessage(message).size()); assertEquals(2, messageContainer.getReceiverOfMessage(message2).size()); assertEquals(script2, messageContainer.getReceiverOfMessage(message2).get(0)); assertEquals(script3, messageContainer.getReceiverOfMessage(message2).get(1)); } }