/**
* Copyright (C) 2017 Jan Schäfer (jansch@users.sourceforge.net)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jskat.util.rule;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.jskat.AbstractJSkatTest;
import org.jskat.util.Card;
import org.jskat.util.CardList;
import org.jskat.util.GameType;
import org.junit.Test;
/**
* Test suite for all skat rule tests
*/
public class BasicSkatRuleTest extends AbstractJSkatTest {
private CardList hand = new CardList();
private static SkatRule clubRules = SkatRuleFactory.getSkatRules(GameType.CLUBS);
private static SkatRule spadeRules = SkatRuleFactory.getSkatRules(GameType.SPADES);
private static SkatRule heartRules = SkatRuleFactory.getSkatRules(GameType.HEARTS);
private static SkatRule diamondRules = SkatRuleFactory.getSkatRules(GameType.DIAMONDS);
private static SkatRule grandRules = SkatRuleFactory.getSkatRules(GameType.GRAND);
private static SkatRule nullRules = SkatRuleFactory.getSkatRules(GameType.NULL);
private static SkatRule ramschRules = SkatRuleFactory.getSkatRules(GameType.RAMSCH);
/**
* Checks @see NullRule#isCardAllowed(GameType, Card, CardList, Card)
*/
@Test
public void isCardAllowedNull001() {
assertTrue(nullRules.isCardAllowed(GameType.NULL, Card.CA, this.hand, Card.CK));
}
/**
* Checks @see GrandRule#isCardAllowed(GameType, Card, CardList, Card)
*/
@Test
public void isCardAllowedGrand001() {
assertTrue(grandRules.isCardAllowed(GameType.GRAND, Card.CA, this.hand, Card.CK));
}
/**
* Checks @see SuitRule#isCardAllowed(GameType, Card, CardList, Card)
*/
@Test
public void isCardAllowedSuit001() {
assertTrue(clubRules.isCardAllowed(GameType.CLUBS, Card.CA, this.hand, Card.CK));
}
/**
* Checks @see SuitRule#isCardAllowed(GameType, Card, CardList, Card)
*/
@Test
public void isCardAllowedSuit002() {
this.hand.clear();
this.hand.add(Card.C7);
this.hand.add(Card.HK);
this.hand.add(Card.HJ);
assertFalse(diamondRules.isCardAllowed(GameType.DIAMONDS, Card.HT, this.hand, Card.HJ));
}
/**
* Checks @see SuitRule#isCardAllowed(GameType, Card, CardList, Card)
*/
@Test
public void isCardAllowedSuit003() {
this.hand.clear();
this.hand.add(Card.C7);
this.hand.add(Card.HK);
this.hand.add(Card.HJ);
assertTrue(diamondRules.isCardAllowed(GameType.DIAMONDS, Card.HT, this.hand, Card.HK));
}
/**
* Checks @see RamschRule#isCardAllowed(GameType, Card, CardList, Card)
*/
@Test
public void isCardAllowedRamsch001() {
assertTrue(ramschRules.isCardAllowed(GameType.RAMSCH, Card.CA, this.hand, Card.CK));
}
/**
* Checks @see NullRule#isCardBeatsCard(GameType, Card, Card)
*/
@Test
public void isCardBeatsCardNull001() {
assertTrue(nullRules.isCardBeatsCard(GameType.NULL, Card.C7, Card.C8));
}
/**
* Checks @see GrandRule#isCardBeatsCard(GameType, Card, Card)
*/
@Test
public void isCardBeatsCardGrand001() {
assertTrue(grandRules.isCardBeatsCard(GameType.GRAND, Card.C7, Card.C8));
}
/**
* Checks @see SuitRule#isCardBeatsCard(GameType, Card, Card)
*/
@Test
public void isCardBeatsCardSuit001() {
assertTrue(clubRules.isCardBeatsCard(GameType.CLUBS, Card.C7, Card.C8));
}
/**
* Checks @see SuitRule#isCardBeatsCard(GameType, Card, Card)
*/
@Test
public void isCardBeatsCardSuit002() {
assertTrue(clubRules.isCardBeatsCard(GameType.CLUBS, Card.C7, Card.HJ));
}
/**
* Checks @see SuitRule#isCardBeatsCard(GameType, Card, Card)
*/
@Test
public void isCardBeatsCardSuit003() {
assertTrue(clubRules.isCardBeatsCard(GameType.CLUBS, Card.CA, Card.CJ));
}
/**
* Checks @see SuitRule#isCardBeatsCard(GameType, Card, Card)
*/
@Test
public void isCardBeatsCardSuit004() {
assertTrue(clubRules.isCardBeatsCard(GameType.CLUBS, Card.SJ, Card.CJ));
}
/**
* Checks @see RamschRule#isCardBeatsCard(GameType, Card, Card)
*/
@Test
public void isCardBeatsCardRamsch001() {
assertTrue(ramschRules.isCardBeatsCard(GameType.RAMSCH, Card.C7, Card.C8));
}
}