void test_SplitYearDays1() { int32 eyd; for (eyd = -1; eyd <= 365; eyd++) { ntpcal_split split = ntpcal_split_yeardays(eyd, 0); if (split.lo >= 0 && split.hi >= 0) { TEST_ASSERT_TRUE(isGT(12,split.hi));//EXPECT_GT(12, split.hi); TEST_ASSERT_TRUE(isGT(real_month_days[0][split.hi+1], split.lo));//EXPECT_GT(real_month_days[0][split.hi+1], split.lo); int32 tyd = real_month_table[0][split.hi] + split.lo; TEST_ASSERT_EQUAL(eyd, tyd); } else TEST_ASSERT_TRUE(eyd < 0 || eyd > 364); } }
void test_SplitYearDays2() { int32 eyd; for (eyd = -1; eyd <= 366; eyd++) { ntpcal_split split = ntpcal_split_yeardays(eyd, 1); if (split.lo >= 0 && split.hi >= 0) { //TEST_ASSERT_TRUE(12 > split.hi); //simpler version, works for basic types, doesn't work for complex structs TEST_ASSERT_TRUE(isGT(12,split.hi));//EXPECT_GT(12, split.hi); TEST_ASSERT_TRUE(isGT(real_month_days[1][split.hi+1], split.lo));//EXPECT_GT(real_month_days[1][split.hi+1], split.lo); int32 tyd = real_month_table[1][split.hi] + split.lo; TEST_ASSERT_EQUAL(eyd, tyd); } else TEST_ASSERT_TRUE(eyd < 0 || eyd > 365); } }
void test_SplitYearDays2(void) { int32 eyd; for (eyd = -1; eyd <= 366; eyd++) { ntpcal_split split = ntpcal_split_yeardays(eyd, 1); if (split.lo >= 0 && split.hi >= 0) { /* basic checks do not work on compunds :( */ /* would like: TEST_ASSERT_TRUE(12 > split.hi); */ TEST_ASSERT_TRUE(isGT(12,split.hi)); TEST_ASSERT_TRUE(isGT(real_month_days[1][split.hi+1], split.lo)); int32 tyd = real_month_table[1][split.hi] + split.lo; TEST_ASSERT_EQUAL(eyd, tyd); } else TEST_ASSERT_TRUE(eyd < 0 || eyd > 365); } return; }
/** * 比较我的牌和上家的牌的大小,决定是否可以出牌 * @param myCards 我想出的牌 * @param myCardType 我的牌的类型 * @param prevCards 上家的牌 * @param prevCardType 上家的牌型 * @return 可以出牌,返回true;否则,返回false。 */ bool CardUtil::isOvercomePrev(QList<CardItem *> myCards, CardType myCardType, QList<CardItem *> prevCards, CardType prevCardType) { if(myCardType == UNKNOW){ return false; } // 上一首牌的个数 int prevSize = prevCards.size(); int mySize = myCards.size(); // 我先出牌,上家没有牌 if (prevSize == 0 && mySize != 0) { return true; } // 集中判断是否王炸,免得多次判断王炸 if (prevCardType == WANG_ZHA) { qDebug("上家王炸,肯定不能出。"); return false; } else if (myCardType == WANG_ZHA) { qDebug("我王炸,肯定能出。"); return true; } // 集中判断对方不是炸弹,我出炸弹的情况 if (prevCardType != ZHA_DAN && myCardType == ZHA_DAN) { return true; } // 默认情况:上家和自己想出的牌都符合规则 qSort(prevCards.begin(),prevCards.end(),lessThan); qSort(myCards.begin(),myCards.end(),lessThan); int myGrade = myCards.at(0)->CardNum; int prevGrade = prevCards.at(0)->CardNum; // 比较2家的牌,主要有2种情况,1.我出和上家一种类型的牌,即对子管对子; // 2.我出炸弹,此时,和上家的牌的类型可能不同 // 王炸的情况已经排除 // 单 if (prevCardType == DAN && myCardType == DAN) { // 一张牌可以大过上家的牌 return isGT(myGrade,prevGrade); } // 对子 else if (prevCardType == DUI_ZI && myCardType == DUI_ZI) { // 2张牌可以大过上家的牌 return isGT(myGrade,prevGrade); } // 3不带 else if (prevCardType == SAN_BU_DAI && myCardType == SAN_BU_DAI) { // 3张牌可以大过上家的牌 return isGT(myGrade,prevGrade); } // 炸弹 else if (prevCardType == ZHA_DAN && myCardType == ZHA_DAN) { // 4张牌可以大过上家的牌 return isGT(myGrade,prevGrade); } // 3带1 else if (prevCardType == SAN_DAI_YI && myCardType == SAN_DAI_YI) { // 3带1只需比较第2张牌的大小 myGrade = myCards.at(1)->CardNum; prevGrade = prevCards.at(1)->CardNum; return isGT(myGrade,prevGrade); } // 4带2 else if (prevCardType == SI_DAI_ER && myCardType == SI_DAI_ER) { // 4带2只需比较第3张牌的大小 myGrade = myCards.at(2)->CardNum; prevGrade = prevCards.at(2)->CardNum; } // 顺子 else if (prevCardType == SHUN_ZI && myCardType == SHUN_ZI) { if (mySize != prevSize) { return false; } else { // 顺子只需比较最大的1张牌的大小 myGrade = myCards.at(mySize - 1)->CardNum; prevGrade = prevCards.at(prevSize - 1)->CardNum; return isGT(myGrade,prevGrade); } } // 连对 else if (prevCardType == LIAN_DUI && myCardType == LIAN_DUI) { if (mySize != prevSize) { return false; } else { // 顺子只需比较最大的1张牌的大小 myGrade = myCards.at(mySize - 1)->CardNum; prevGrade = prevCards.at(prevSize - 1)->CardNum; return isGT(myGrade,prevGrade); } } // 飞机 else if (prevCardType == FEI_JI && myCardType == FEI_JI) { if (mySize != prevSize) { return false; } else { // 顺子只需比较第5张牌的大小(特殊情况333444555666没有考虑,即12张的飞机,可以有2种出法) myGrade = myCards.at(4)->CardNum; prevGrade = prevCards.at(4)->CardNum; return isGT(myGrade,prevGrade); } } // 默认不能出牌 return false; }