Package

Source Code of CommandsTests

import games.pickupbot.ExtensionObject;
import games.pickupbot.Game;
import org.jaibo.api.database.DatabaseCredentials;
import org.jaibo.api.database.DatabaseProvider;
import org.jaibo.api.database.MainDatabaseManager;
import org.jaibo.api.tests.TestExtensionMessenger;
import org.jaibo.api.IrcEvent;
import org.jaibo.api.IrcMessage;
import junit.framework.TestCase;

/**
* games.pickupbot.commands test class
* Copyright (C) 2014  Victor Polevoy (vityatheboss@gmail.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

public final class CommandsTests extends TestCase {
    private final TestExtensionMessenger messenger = new TestExtensionMessenger();

    // To test with mysql simply set correct credentials and change provider in `setUp` method
    private static DatabaseCredentials testCredentials = new DatabaseCredentials(null, null, null, "aibo");

    private final ExtensionObject extensionObject = new ExtensionObject();

    private String[] games = {
            "ctf/8",
            "tdm2v2/4",
            "test/2",
            "test2/4"
    };

    private String testGameAccount1 = "_test_aibo_game_account_11_";
    private String testGameAccount2 = "_test_aibo_game_account_22_";

    private String testIam1 =
            String.format(":testNickName1!testUser1@test1.users.quakenet.org PRIVMSG #test-channel :!iam %s",
                    this.testGameAccount1);

    private String testIam2 =
            String.format(":testNickName2!testUser2@test2.users.quakenet.org PRIVMSG #test-channel :!iam %s",
                    this.testGameAccount2);

    private String testAdd1Message =
    ":testNickName1!testUser1@test1.users.quakenet.org PRIVMSG #test-channel :!add test";

    private String testAdd2Message = ":testNickName2!testUser2@test2.users.quakenet.org PRIVMSG #test-channel :!add test";
    private String testAdd3Message = ":testNickName1!testUser1@test1.users.quakenet.org PRIVMSG #test-channel :!a";

    private String testWrongAddMessage =    ":testNickName1!testUser1@test1.users.quakenet.org " +
                                            "PRIVMSG #test-channel :!add 5492dsgw53";

    private String testPlayerNickChangeMessage =
            ":testNickName1!testUser1@test1.users.quakenet.org NICK :testNickName2";

    private String testPromoteDefaultGameTypeMessage =
            ":testNickName1!testUser1@test1.users.quakenet.org PRIVMSG #test-channel :!p";

    private String testPromoteTestGameTypeMessage =
            ":testNickName1!testUser1@test1.users.quakenet.org PRIVMSG #test-channel :!p test";

    private String testPromoteWrongGameTypeMessage =
            ":testNickName1!testUser1@test1.users.quakenet.org PRIVMSG #test-channel :!p sdafsf3245fgh421";

    private String testRemovePlayerMessageFromDefaultGameType =
            ":testNickName1!testUser1@test1.users.quakenet.org PRIVMSG #test-channel :!r";

    private String testRemovePlayerMessageFromTestGameType =
            ":testNickName1!testUser1@test1.users.quakenet.org PRIVMSG #test-channel :!r test";

    private String testWrongRemovePlayerMessage =
            ":testNickName1!testUser1@test1.users.quakenet.org PRIVMSG #test-channel :!r sdafsf3245fgh421";

    private String testWhoDefaultMessage =
            ":testNickName1!testUser1@test1.users.quakenet.org PRIVMSG #test-channel :!w";

    private String testWhoTestMessage =
            ":testNickName1!testUser1@test1.users.quakenet.org PRIVMSG #test-channel :!w";

    private String testWrongWhoMessage =
            ":testNickName1!testUser1@test1.users.quakenet.org PRIVMSG #test-channel :!w sdafsf3245fgh421";

    private String testPlayer1KickMessage =
            ":testNickName1!testUser1@test1.users.quakenet.org KICK #test-channel testNickName1 :awesome reason";

    private String testPlayer1NickCaseChangeMessage =
            ":testNickName1!testUser1@test1.users.quakenet.org NICK :TeStNIcKNAME1";

    private String testNotAdminResetMessage =
            ":testNickName1!testUser1@test1.users.quakenet.org PRIVMSG fgd :!reset";

    private String testAdminResetMessage =
            String.format(":testNickName1!testUser1@%s PRIVMSG fgd :!reset",
                    this.extensionObject.getRootAdmin());


    @Override
    protected void setUp() throws Exception {
        super.setUp();

        this.extensionObject.setTopicAutoUpdate(false);

        DatabaseProvider.setCredentials(testCredentials);
        DatabaseProvider.setDatabaseProvider("sqlite");

        // Need to create admin table to pass tests
        new MainDatabaseManager();

        this.extensionObject.clearGames();

        for (String gameType : this.games) {
            Game game = Game.tryParse(gameType);

            this.extensionObject.addGame(game);
        }

        extensionObject.setExtensionMessenger(this.messenger);

        this.extensionObject.processTask(IrcMessage.tryParse(testIam1));
        this.extensionObject.processTask(IrcMessage.tryParse(testIam2));
    }

    public void testPickupBotAddPlayer() {
        this.extensionObject.processTask(IrcMessage.tryParse(testAdd1Message));

        assertEquals(this.messenger.isSetTopicEvent(), true);
        this.extensionObject.processTask(IrcMessage.tryParse(testAdd1Message));

        assertEquals(this.messenger.isSetTopicEvent(), false);

        this.extensionObject.processTask(IrcMessage.tryParse(this.testWrongAddMessage));
        assertEquals(this.messenger.isSendNoticeEvent(), true);
        assertEquals(this.messenger.isSetTopicEvent(), false);
    }

    public void testPickupBotAddToDefaultGameType() {
        this.extensionObject.processTask(IrcMessage.tryParse(this.testAdd3Message));

        assertEquals(this.messenger.isSetTopicEvent(), true);
    }

    public void testPickupBotGatherPickupGame() {
        this.extensionObject.processTask(IrcMessage.tryParse(this.testAdd1Message));
        this.extensionObject.processTask(IrcMessage.tryParse(this.testAdd2Message));

        assertEquals(this.messenger.isSetTopicEvent(), true);
        assertEquals(this.messenger.isSendBroadcastMessageEvent(), true);
        assertEquals(this.messenger.isSendPrivateMessageEvent(), true);
    }

    public void testPromote() {
        this.extensionObject.processTask(IrcMessage.tryParse(testAdd3Message));
        this.messenger.isSendBroadcastMessageEvent();
        this.extensionObject.processTask(IrcMessage.tryParse(this.testPromoteDefaultGameTypeMessage));

        assertEquals(this.messenger.isSendBroadcastMessageEvent(), true);


        this.extensionObject.processTask(IrcMessage.tryParse(testAdd1Message));
        this.messenger.isSendBroadcastMessageEvent();
        this.extensionObject.processTask(IrcMessage.tryParse(this.testPromoteTestGameTypeMessage));

        assertEquals(this.messenger.isSendBroadcastMessageEvent(), true);

        this.extensionObject.processTask(IrcMessage.tryParse(this.testPromoteWrongGameTypeMessage));
        assertEquals(this.messenger.isSendBroadcastMessageEvent(), false);
        assertEquals(this.messenger.isSendNoticeEvent(), true);
    }

    public void testRemovePlayer() {
        this.extensionObject.processTask(IrcMessage.tryParse(testAdd3Message));

        this.messenger.isSetTopicEvent();


        this.extensionObject.processTask(IrcMessage.tryParse(testRemovePlayerMessageFromDefaultGameType));
        assertEquals(this.messenger.isSetTopicEvent(), true);

        this.extensionObject.processTask(IrcMessage.tryParse(testRemovePlayerMessageFromDefaultGameType));
        assertEquals(this.messenger.isSetTopicEvent(), false);
    }

    public void testGetPlayerList() {
        this.extensionObject.processTask(IrcMessage.tryParse(testAdd1Message));
        this.extensionObject.processTask(IrcMessage.tryParse(testAdd3Message));

        assertEquals(this.messenger.isSetTopicEvent(), true);

        this.extensionObject.processTask(IrcMessage.tryParse(testWhoDefaultMessage));
        assertEquals(this.messenger.isSendBroadcastMessageEvent(), true);

        this.extensionObject.processTask(IrcMessage.tryParse(testWhoTestMessage));
        assertEquals(this.messenger.isSendBroadcastMessageEvent(), true);

        this.extensionObject.processTask(IrcMessage.tryParse(testWrongWhoMessage));
        assertEquals(this.messenger.isSendBroadcastMessageEvent(), false);
        assertEquals(this.messenger.isSendNoticeEvent(), true);
    }

    public void testPlayerRemoveOnKickPartQuit() {
        this.extensionObject.processTask(IrcMessage.tryParse(testAdd1Message));
        assertEquals(this.messenger.isSetTopicEvent(), true);

        this.extensionObject.processTask(IrcEvent.tryParse(testPlayer1KickMessage));
        assertEquals(this.messenger.isSetTopicEvent(), true);
    }

    public void testPlayerNickChange() {
        this.extensionObject.processTask(IrcMessage.tryParse(testAdd3Message));
        assertEquals(this.messenger.isSetTopicEvent(), true);

        this.extensionObject.processTask(IrcEvent.tryParse(testPlayerNickChangeMessage));
        assertEquals(this.messenger.isSetTopicEvent(), false);
    }

    public void testPlayerCaseNickChange() {
        this.extensionObject.processTask(IrcMessage.tryParse(testAdd3Message));
        assertEquals(this.messenger.isSetTopicEvent(), true);

        this.extensionObject.processTask(IrcEvent.tryParse(testPlayer1NickCaseChangeMessage));
        assertEquals(this.messenger.isSetTopicEvent(), false);
    }

    public void testPickupBotReset() {
        this.extensionObject.processTask(IrcMessage.tryParse(testAdd3Message));
        this.extensionObject.processTask(IrcMessage.tryParse(testAdd1Message));

        this.extensionObject.processTask(IrcMessage.tryParse(testNotAdminResetMessage));
        assertFalse(this.extensionObject.getPlayers(null, false).length() == 0);
        this.extensionObject.processTask(IrcMessage.tryParse(testAdminResetMessage));
        assertEquals(this.extensionObject.getPlayers(null, false).length(), 0);
        assertEquals(this.extensionObject.getPlayers(Game.tryParse(this.games[2]).getGameType(), false).length(), 0);
    }
}
TOP

Related Classes of CommandsTests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.