Ejemplo n.º 1
0
}END_TESTF

// div ノーマル
BEGIN_TESTF(r5900_special_div_001, r5900_special_fix_01)
{
  try
  {
    OPEN_ELF("special");
    INIT_GPR(0xcccccccc);
    g_cpu->m_t0.d[0] = 0x00000045; g_cpu->m_s0.d[0] = 0x00000020;  // 被除数が正・除数が正 > 商が正・余が正
    g_cpu->m_t1.d[0] = 0xfffffffd; g_cpu->m_s1.d[0] = 0x00000002;  // 被除数が負・除数が正 > 商が負・余が負
    g_cpu->m_t2.d[0] = 0xfffffffd; g_cpu->m_s2.d[0] = 0xfffffffe;  // 被除数が負・除数が負 > 商が正・余が負
    g_cpu->m_t3.d[0] = 0x00000003; g_cpu->m_s3.d[0] = 0xfffffffe;  // 被除数が正・除数が負 > 商が負・余が正

    g_cpu->m_t4.d[0] = 0x00001234; g_cpu->m_s4.d[0] = 0x00000000;  // 0除算

    g_cpu->execute();
    WIN_ASSERT_TRUE(g_cpu->m_s0.d[1] == 0x00000000 && g_cpu->m_s0.d[0] == 0x00000005);  // hi 余
    WIN_ASSERT_TRUE(g_cpu->m_t0.d[1] == 0x00000000 && g_cpu->m_t0.d[0] == 0x00000002);  // lo 商
    
    WIN_ASSERT_TRUE(g_cpu->m_s1.d[1] == 0xffffffff && g_cpu->m_s1.d[0] == 0xffffffff);  // hi 余
    WIN_ASSERT_TRUE(g_cpu->m_t1.d[1] == 0xffffffff && g_cpu->m_t1.d[0] == 0xffffffff);  // lo 商

    WIN_ASSERT_TRUE(g_cpu->m_s2.d[1] == 0xffffffff && g_cpu->m_s2.d[0] == 0xffffffff);  // hi 余
    WIN_ASSERT_TRUE(g_cpu->m_t2.d[1] == 0x00000000 && g_cpu->m_t2.d[0] == 0x00000001);  // lo 商

    WIN_ASSERT_TRUE(g_cpu->m_s3.d[1] == 0x00000000 && g_cpu->m_s3.d[0] == 0x00000001);  // hi 余
    WIN_ASSERT_TRUE(g_cpu->m_t3.d[1] == 0xffffffff && g_cpu->m_t3.d[0] == 0xffffffff);  // lo 商
    
    // 0除算はhi, loが変化しないので前回の演算結果と同じものが格納される。念のためチェック
    WIN_ASSERT_TRUE(g_cpu->m_s4.d[1] == 0x00000000 && g_cpu->m_s4.d[0] == 0x00000001);  // hi 余
    WIN_ASSERT_TRUE(g_cpu->m_t4.d[1] == 0xffffffff && g_cpu->m_t4.d[0] == 0xffffffff);  // lo 商
  }
  catch (char* msg) { WIN_ASSERT_FAIL(msg); }
}END_TESTF
Ejemplo n.º 2
0
}END_TESTF

// multu ノーマル
BEGIN_TESTF(r5900_special_multu_001, r5900_special_fix_01)
{
  try
  {
    OPEN_ELF("special");
    INIT_GPR(0xcccccccc);
    g_cpu->m_a0.d[0] = 0x00000020; g_cpu->m_t0.d[0] = 0x00000045;
    g_cpu->m_a1.d[0] = 0xffffffff; g_cpu->m_t1.d[0] = 0x00000002;
    g_cpu->m_a2.d[0] = 0x7fffffff; g_cpu->m_t2.d[0] = 0x7fffffff;
    g_cpu->m_a3.d[0] = 0x80000000; g_cpu->m_t3.d[0] = 0x7fffffff;

    g_cpu->execute();
    WIN_ASSERT_TRUE(g_cpu->m_a0.d[1] == 0x00000000 && g_cpu->m_a0.d[0] == 0x00000000);  // hi
    WIN_ASSERT_TRUE(g_cpu->m_s0.d[1] == 0x00000000 && g_cpu->m_s0.d[0] == 0x000008a0);  // lo
    
    WIN_ASSERT_TRUE(g_cpu->m_a1.d[1] == 0x00000000 && g_cpu->m_a1.d[0] == 0x00000001);  // hi
    WIN_ASSERT_TRUE(g_cpu->m_s1.d[1] == 0xffffffff && g_cpu->m_s1.d[0] == 0xfffffffe);  // lo

    WIN_ASSERT_TRUE(g_cpu->m_a2.d[1] == 0x00000000 && g_cpu->m_a2.d[0] == 0x3fffffff);  // hi
    WIN_ASSERT_TRUE(g_cpu->m_s2.d[1] == 0x00000000 && g_cpu->m_s2.d[0] == 0x00000001);  // lo
    WIN_ASSERT_TRUE(g_cpu->m_v0.d[1] == g_cpu->m_s2.d[1] && g_cpu->m_v0.d[0] == g_cpu->m_s2.d[0]);

    WIN_ASSERT_TRUE(g_cpu->m_a3.d[1] == 0x00000000 && g_cpu->m_a3.d[0] == 0x3fffffff);  // hi
    WIN_ASSERT_TRUE(g_cpu->m_s3.d[1] == 0xffffffff && g_cpu->m_s3.d[0] == 0x80000000);  // lo
    WIN_ASSERT_TRUE(g_cpu->m_v1.d[1] == g_cpu->m_s3.d[1] && g_cpu->m_v1.d[0] == g_cpu->m_s3.d[0]);
  }
  catch (char* msg) { WIN_ASSERT_FAIL(msg); }
}END_TESTF
Ejemplo n.º 3
0
}END_TESTF

// dsllv ノーマル
BEGIN_TESTF(r5900_special_dsllv_001, r5900_special_fix_01)
{
  try
  {
    OPEN_ELF("special");
    INIT_GPR(0xcccccccc);
    g_cpu->m_v0.d[1] = 0x01234567; g_cpu->m_v0.d[0] = 0x89abcdef;

    g_cpu->m_s0.d[0] = 0xff000000;
    g_cpu->m_s1.d[0] = 0xff000001;
    g_cpu->m_s2.d[0] = 0xffff0010;
    g_cpu->m_s3.d[0] = 0xffff001f;
    g_cpu->m_s4.d[0] = 0xff000020;
    g_cpu->m_s5.d[0] = 0xff000021;
    g_cpu->m_s6.d[0] = 0xffff003f;
    g_cpu->m_s7.d[0] = 0xffff0040;

    g_cpu->execute();
    WIN_ASSERT_TRUE(g_cpu->m_t0.d[1] == 0x01234567 && g_cpu->m_t0.d[0] == 0x89abcdef);
    WIN_ASSERT_TRUE(g_cpu->m_t1.d[1] == 0x02468acf && g_cpu->m_t1.d[0] == 0x13579bde);
    WIN_ASSERT_TRUE(g_cpu->m_t2.d[1] == 0x456789ab && g_cpu->m_t2.d[0] == 0xcdef0000);
    WIN_ASSERT_TRUE(g_cpu->m_t3.d[1] == 0xc4d5e6f7 && g_cpu->m_t3.d[0] == 0x80000000);

    WIN_ASSERT_TRUE(g_cpu->m_t4.d[1] == 0x89abcdef && g_cpu->m_t4.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_t5.d[1] == 0x13579bde && g_cpu->m_t5.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_t6.d[1] == 0x80000000 && g_cpu->m_t6.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_t7.d[1] == 0x01234567 && g_cpu->m_t7.d[0] == 0x89abcdef);
  }
  catch (char* msg) { WIN_ASSERT_FAIL(msg); }
}END_TESTF
Ejemplo n.º 4
0
}END_TESTF

// dsrav ノーマル
BEGIN_TESTF(r5900_special_dsrav_001, r5900_special_fix_01)
{
  try
  {
    OPEN_ELF("special");
    INIT_GPR(0xcccccccc);
    g_cpu->m_v0.d[1] = 0x01234567; g_cpu->m_v0.d[0] = 0x89abcdef;
    g_cpu->m_v1.d[1] = 0x81234567; g_cpu->m_v1.d[0] = 0x09abcdef;

    g_cpu->m_s0.d[0] = 0xff000000;
    g_cpu->m_s1.d[0] = 0xff000001;
    g_cpu->m_s2.d[0] = 0xff000022;
    g_cpu->m_s3.d[0] = 0xffff0040;

    g_cpu->m_s4.d[0] = 0xff000000;
    g_cpu->m_s5.d[0] = 0xff000001;
    g_cpu->m_s6.d[0] = 0xff000022;
    g_cpu->m_s7.d[0] = 0xffff0040;

    g_cpu->execute();
    WIN_ASSERT_TRUE(g_cpu->m_t0.d[1] == 0x01234567 && g_cpu->m_t0.d[0] == 0x89abcdef);
    WIN_ASSERT_TRUE(g_cpu->m_t1.d[1] == 0x0091a2b3 && g_cpu->m_t1.d[0] == 0xc4d5e6f7);
    WIN_ASSERT_TRUE(g_cpu->m_t2.d[1] == 0x00000000 && g_cpu->m_t2.d[0] == 0x0048d159);
    WIN_ASSERT_TRUE(g_cpu->m_t3.d[1] == 0x01234567 && g_cpu->m_t3.d[0] == 0x89abcdef);

    WIN_ASSERT_TRUE(g_cpu->m_t4.d[1] == 0x81234567 && g_cpu->m_t4.d[0] == 0x09abcdef);
    WIN_ASSERT_TRUE(g_cpu->m_t5.d[1] == 0xc091a2b3 && g_cpu->m_t5.d[0] == 0x84d5e6f7);
    WIN_ASSERT_TRUE(g_cpu->m_t6.d[1] == 0xffffffff && g_cpu->m_t6.d[0] == 0xe048d159);
    WIN_ASSERT_TRUE(g_cpu->m_t7.d[1] == 0x81234567 && g_cpu->m_t7.d[0] == 0x09abcdef);
  }
  catch (char* msg) { WIN_ASSERT_FAIL(msg); }
}END_TESTF
Ejemplo n.º 5
0
}END_TESTF

// movz movn ノーマル
BEGIN_TESTF(r5900_special_movz_movn_001, r5900_special_fix_01)
{
  try
  {
    OPEN_ELF("special");
    INIT_GPR(0xcccccccc);
    g_cpu->m_s0.d[1] = 0x12345678; g_cpu->m_s0.d[0] = 0x9abcdef0;
    g_cpu->m_s1.d[1] = 0x56789abc; g_cpu->m_s1.d[0] = 0xdef01234;
    g_cpu->m_s2.d[1] = 0xaaaabbbb; g_cpu->m_s2.d[0] = 0xccccdddd;
    g_cpu->m_s3.d[1] = 0x11112222; g_cpu->m_s3.d[0] = 0x33334444;

    g_cpu->m_t0.d[1] = 0x00000000; g_cpu->m_t0.d[0] = 0x00000000;
    g_cpu->m_t1.d[1] = 0x00001000; g_cpu->m_t1.d[0] = 0x00000000;
    g_cpu->m_t2.d[1] = 0x00000000; g_cpu->m_t2.d[0] = 0x00001000;
    g_cpu->m_t3.d[1] = 0x00001000; g_cpu->m_t3.d[0] = 0x00001000;

    g_cpu->execute();
    WIN_ASSERT_TRUE(g_cpu->m_a0.d[1] == 0x12345678 && g_cpu->m_a0.d[0] == 0x9abcdef0);
    WIN_ASSERT_TRUE(g_cpu->m_a1.d[1] == 0xcccccccc && g_cpu->m_a1.d[0] == 0xcccccccc);
    WIN_ASSERT_TRUE(g_cpu->m_a2.d[1] == 0xcccccccc && g_cpu->m_a2.d[0] == 0xcccccccc);
    WIN_ASSERT_TRUE(g_cpu->m_a3.d[1] == 0xcccccccc && g_cpu->m_a3.d[0] == 0xcccccccc);

    WIN_ASSERT_TRUE(g_cpu->m_t4.d[1] == 0xcccccccc && g_cpu->m_t4.d[0] == 0xcccccccc);
    WIN_ASSERT_TRUE(g_cpu->m_t5.d[1] == 0x56789abc && g_cpu->m_t5.d[0] == 0xdef01234);
    WIN_ASSERT_TRUE(g_cpu->m_t6.d[1] == 0xaaaabbbb && g_cpu->m_t6.d[0] == 0xccccdddd);
    WIN_ASSERT_TRUE(g_cpu->m_t7.d[1] == 0x11112222 && g_cpu->m_t7.d[0] == 0x33334444);
  }
  catch (char* msg) { WIN_ASSERT_FAIL(msg); }
}END_TESTF
Ejemplo n.º 6
0
// jr jalr ノーマル
BEGIN_TESTF(r5900_special_jr_jalr_001, r5900_special_fix_01)
{
  try
  {
    OPEN_ELF("special");
    INIT_GPR(0xcccccccc);

    g_cpu->execute();
    WIN_ASSERT_TRUE(g_cpu->m_t0.d[0] == 0x00000001);
    WIN_ASSERT_TRUE(g_cpu->m_t1.d[0] == 0x00000002);
    WIN_ASSERT_TRUE(g_cpu->m_t2.d[0] == 0x00000004);
    WIN_ASSERT_TRUE(g_cpu->m_t3.d[0] == 0x00000008);
    WIN_ASSERT_TRUE(g_cpu->m_at.d[1] == g_cpu->m_ra.d[1] && g_cpu->m_at.d[0] == g_cpu->m_ra.d[0]);
  }
  catch (char* msg) { WIN_ASSERT_FAIL(msg); }
}END_TESTF
Ejemplo n.º 7
0
}END_TESTF

// dsrl ノーマル
BEGIN_TESTF(r5900_special_dsrl_001, r5900_special_fix_01){
  try
  {
    OPEN_ELF("special");
    INIT_GPR(0xcccccccc);
    g_cpu->m_a0.d[1] = 0x01234567; g_cpu->m_a0.d[0] = 0x89abcdef;
    g_cpu->execute();
    WIN_ASSERT_TRUE(g_cpu->m_t0.d[1] == 0x01234567 && g_cpu->m_t0.d[0] == 0x89abcdef);
    WIN_ASSERT_TRUE(g_cpu->m_t1.d[1] == 0x0091a2b3 && g_cpu->m_t1.d[0] == 0xc4d5e6f7);
    WIN_ASSERT_TRUE(g_cpu->m_t2.d[1] == 0x00000000 && g_cpu->m_t2.d[0] == 0x02468acf);
    WIN_ASSERT_TRUE(g_cpu->m_t3.d[1] == 0x00000123 && g_cpu->m_t3.d[0] == 0x456789ab);

    WIN_ASSERT_TRUE(g_cpu->m_a0.d[1] == 0x0091a2b3 && g_cpu->m_a0.d[0] == 0xc4d5e6f7);  // srcとdstが同じケース
  }
  catch (char* msg) { WIN_ASSERT_FAIL(msg); }
}END_TESTF
Ejemplo n.º 8
0
END_TEST

BEGIN_TEST(viewInsideRegion1) 
{
Region r1 = Region(1,2,3,4);
r1.
v.addRegion(r1);
WIN_ASSERT_TRUE(v.clickableRegions.get(r1).isInsideRegion(2,3));


}
Ejemplo n.º 9
0
}END_TESTF

// dsll32 ノーマル
BEGIN_TESTF(r5900_special_dsll32_001, r5900_special_fix_01)
{
  try
  {
    OPEN_ELF("special");
    INIT_GPR(0xcccccccc);
    g_cpu->m_a0.d[1] = 0x01234567; g_cpu->m_a0.d[0] = 0x89abcdef;
    g_cpu->execute();
    WIN_ASSERT_TRUE(g_cpu->m_t0.d[1] == 0x89abcdef && g_cpu->m_t0.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_t1.d[1] == 0x13579bde && g_cpu->m_t1.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_t2.d[1] == 0x80000000 && g_cpu->m_t2.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_t3.d[1] == 0xcdef0000 && g_cpu->m_t3.d[0] == 0x00000000);

    WIN_ASSERT_TRUE(g_cpu->m_a0.d[1] == 0x13579bde && g_cpu->m_a0.d[0] == 0x00000000);  // srcとdstが同じケース
  }
  catch (char* msg) { WIN_ASSERT_FAIL(msg); }
}END_TESTF
Ejemplo n.º 10
0
}END_TESTF

// maddu1 ノーマル
BEGIN_TESTF(r5900_mmi_maddu1_001, r5900_mmi_fix_01){
  try
  {
    OPEN_ELF("mmi");
    INIT_GPR(0xcccccccc);
    g_cpu->m_hi.d[3] = g_cpu->m_hi.d[2] = g_cpu->m_hi.d[1] = g_cpu->m_hi.d[0] = 0xcccccccc;
    g_cpu->m_lo.d[3] = g_cpu->m_lo.d[2] = g_cpu->m_lo.d[1] = g_cpu->m_lo.d[0] = 0xcccccccc;

    // (a3|a2)=(a3|a2) + a0 * a1 乗算結果の下位Wordが負数(オーバーフロー)
    g_cpu->m_a0.d[0] = 0x11000020; g_cpu->m_a1.d[0] = 0x00000045; g_cpu->m_a2.d[0] = 0x00000001; g_cpu->m_a3.d[0] = 0x00000002;
    // (t3|t2)=(t3|t2) + t0 * t1 乗算結果が負数
    g_cpu->m_t0.d[0] = 0xffffffff; g_cpu->m_t1.d[0] = 0x00000045; g_cpu->m_t2.d[0] = 0x00000001; g_cpu->m_t3.d[0] = 0x00000002;
    // (t7|t6)=(t7|t6) + t4 * t5 下位Wordの加算にてキャリー発生するケース
    g_cpu->m_t4.d[0] = 0x0000ffff; g_cpu->m_t5.d[0] = 0x0001ffff; g_cpu->m_t6.d[0] = 0x00100000; g_cpu->m_t7.d[0] = 0x00000010;
    // (s3|s2)=(s3|s2) + s0 * s1 上位Wordの結果が負数
    g_cpu->m_s0.d[0] = 0x80000000; g_cpu->m_s1.d[0] = 0x7fffffff; g_cpu->m_s2.d[0] = 0x00000001; g_cpu->m_s3.d[0] = 0x40000001;
    // (hi|lo)=(s7|s6) + s4 * s5 2オペランド
    g_cpu->m_s4.d[0] = 0x0000ffff; g_cpu->m_s5.d[0] = 0x0001ffff; g_cpu->m_s6.d[0] = 0x00100000; g_cpu->m_s7.d[0] = 0x00000010;

    g_cpu->execute();
    WIN_ASSERT_TRUE(g_cpu->m_a3.d[1] == 0x00000000 && g_cpu->m_a3.d[0] == 0x00000006);  // hi
    WIN_ASSERT_TRUE(g_cpu->m_a2.d[1] == 0xffffffff && g_cpu->m_a2.d[0] == 0x950008a1);  // lo
    
    WIN_ASSERT_TRUE(g_cpu->m_t3.d[1] == 0x00000000 && g_cpu->m_t3.d[0] == 0x00000046);  // hi
    WIN_ASSERT_TRUE(g_cpu->m_t2.d[1] == 0xffffffff && g_cpu->m_t2.d[0] == 0xffffffbc);  // lo

    WIN_ASSERT_TRUE(g_cpu->m_t7.d[1] == 0x00000000 && g_cpu->m_t7.d[0] == 0x00000012);  // hi
    WIN_ASSERT_TRUE(g_cpu->m_t6.d[1] == 0x00000000 && g_cpu->m_t6.d[0] == 0x000d0001);  // lo

    WIN_ASSERT_TRUE(g_cpu->m_s3.d[1] == 0xffffffff && g_cpu->m_s3.d[0] == 0x80000000);  // hi
    WIN_ASSERT_TRUE(g_cpu->m_s2.d[1] == 0xffffffff && g_cpu->m_s2.d[0] == 0x80000001);  // lo

    WIN_ASSERT_TRUE(g_cpu->m_hi.d[3] == 0x00000000 && g_cpu->m_hi.d[2] == 0x00000012);  // hi
    WIN_ASSERT_TRUE(g_cpu->m_lo.d[3] == 0x00000000 && g_cpu->m_lo.d[2] == 0x000d0001);  // lo
  }
  catch (char* msg) { WIN_ASSERT_FAIL(msg); }
}END_TESTF
Ejemplo n.º 11
0
END_TEST

BEGIN_TEST(ItemTestIsInteractable0)
{
	i1.addInteractableItem(i2);
	i1.addInteractableItem(i3);
	i2.addInteractableItem(i1);
	i2.addInteractableItem(i4);
	i3.addInteractableItem(i1);
	i4.addInteractableItem(i2);

	WIN_ASSERT_TRUE(i1.canInteractWithItem(i2));
}
Ejemplo n.º 12
0
// mflo1 mfhi1 mtlo1 mthi1 ノーマル
BEGIN_TESTF(r5900_mmi_mflo1_mfhi1_mtlo1_mthi1_001, r5900_mmi_fix_01){
  try
  {
    OPEN_ELF("mmi");
    INIT_GPR(0xcccccccc);
    g_cpu->m_hi.d[3] = g_cpu->m_hi.d[2] = g_cpu->m_hi.d[1] = g_cpu->m_hi.d[0] = 0xcccccccc;
    g_cpu->m_lo.d[3] = g_cpu->m_lo.d[2] = g_cpu->m_lo.d[1] = g_cpu->m_lo.d[0] = 0xcccccccc;

    g_cpu->m_hi.d[1] = 0xffffffff; g_cpu->m_hi.d[0] = 0xffffffff;
    g_cpu->m_lo.d[1] = 0xffffffff; g_cpu->m_lo.d[0] = 0xffffffff;
    g_cpu->m_a0.d[1] = 0x12345678; g_cpu->m_a0.d[0] = 0x9abcdef0;
    g_cpu->m_a1.d[1] = 0x56789abc; g_cpu->m_a1.d[0] = 0xdef01234;

    g_cpu->execute();
    WIN_ASSERT_TRUE(g_cpu->m_s0.d[1] == 0x12345678 && g_cpu->m_s0.d[0] == 0x9abcdef0);
    WIN_ASSERT_TRUE(g_cpu->m_s1.d[1] == 0x56789abc && g_cpu->m_s1.d[0] == 0xdef01234);

    WIN_ASSERT_TRUE(g_cpu->m_hi.d[3] == g_cpu->m_s0.d[1] && g_cpu->m_hi.d[2] == g_cpu->m_s0.d[0]);
    WIN_ASSERT_TRUE(g_cpu->m_lo.d[3] == g_cpu->m_s1.d[1] && g_cpu->m_lo.d[2] == g_cpu->m_s1.d[0]);
  }
  catch (char* msg) { WIN_ASSERT_FAIL(msg); }
}END_TESTF
Ejemplo n.º 13
0
}END_TESTF

// subu ノーマル&オーバーフロー&符号拡張
BEGIN_TESTF(r5900_special_subu_001, r5900_special_fix_01)
{
  try
  {
    OPEN_ELF("special");
    INIT_GPR(0xcccccccc);
    g_cpu->m_a0.d[0] = 0x00003fff; g_cpu->m_s0.d[0] = 0xfffffdde;  // 結果正 (ゼロ拡張)
    g_cpu->m_a1.d[0] = 0x7fffffff; g_cpu->m_s1.d[0] = 0xfffffffe;  // +側オーバーフロー
    g_cpu->m_a2.d[0] = 0x00000000; g_cpu->m_s2.d[0] = 0x7fffffff;   // 結果負 (符号拡張)
    g_cpu->m_a3.d[0] = 0x80000001; g_cpu->m_s3.d[0] = 0x00000002;  // -側オーバーフロー

    g_cpu->execute();
    WIN_ASSERT_TRUE(g_cpu->m_t0.d[1] == 0x00000000 && g_cpu->m_t0.d[0] == 0x00004221);
    WIN_ASSERT_TRUE(g_cpu->m_t1.d[1] == 0xffffffff && g_cpu->m_t1.d[0] == 0x80000001);
    WIN_ASSERT_TRUE(g_cpu->m_t2.d[1] == 0xffffffff && g_cpu->m_t2.d[0] == 0x80000001);
    WIN_ASSERT_TRUE(g_cpu->m_t3.d[1] == 0x00000000 && g_cpu->m_t3.d[0] == 0x7fffffff);

    WIN_ASSERT_TRUE(g_cpu->m_a0.d[1] == 0x00000000 && g_cpu->m_a0.d[0] == 0x00003ffd);
  }
  catch (char* msg) { WIN_ASSERT_FAIL(msg); }
}END_TESTF
END_TEST

/**
* The test must be executed with an already installed Outlook client
*/
BEGIN_TEST(WinContactPhotoIsTheSame)
{
    int ret = 0;
    SyncItem* item = NULL;
    WCHAR* internalKey = NULL;
    wstring propValue; 

    WindowsSyncSource* ss = createContactWindowsSyncSource();   
    WIN_ASSERT_NOT_NULL(ss, TEXT("The syncSource is null."));

    StringBuffer VCard;
    VCard.append("BEGIN:VCARD\r\n");
    VCard.append("VERSION:2.1\r\n");
    VCard.append("N:Paperino;Paolino;Middle;Mr.;suffix\r\n");
    VCard.append("BDAY:20100901\r\n");
    VCard.append("NOTE:\r\n");
    VCard.append("TEL;WORK;FAX:4444444444\r\n");
    VCard.append("TEL;VOICE;WORK:22222222222\r\n");
    VCard.append("TEL;VOICE;WORK:333333333333\r\n");
    VCard.append("TEL;CAR;VOICE:66666666666\r\n");
    VCard.append("CATEGORIES:\r\n");
    VCard.append("TEL;WORK;PREF:777777777777\r\n");
    VCard.append("FN:Paperino, Paolino Middle\r\n");
    VCard.append("EMAIL;INTERNET:[email protected]\r\n");
    VCard.append("EMAIL;INTERNET;HOME:[email protected]\r\n");
    VCard.append("EMAIL;INTERNET;WORK:[email protected]\r\n");
    VCard.append("TITLE:JobTitle\r\n");
    VCard.append("TEL;VOICE;HOME:8888888888888\r\n");
    VCard.append("TEL;VOICE;HOME:999999999999\r\n");
    VCard.append("TEL;HOME;FAX:000000000\r\n");
    VCard.append("URL;HOME:\r\n");
    VCard.append("TEL;CELL:1212121212121\r\n");
    VCard.append("NICKNAME:nickname\r\n");
    VCard.append("TEL;FAX:14141414141\r\n");
    VCard.append("TEL;VOICE:131313131313\r\n");
    VCard.append("TEL;PAGER:151515151\r\n");
    VCard.append("TEL;PREF;VOICE:16161616161\r\n");
    VCard.append("ROLE:profession\r\n");
    VCard.append("URL:www.web.com\r\n");
    VCard.append("ORG:Company;department;office\r\n");
    VCard.append("ADR;HOME:;;Via Riviera 55;pavia;pv;27100;Italy\r\n");
    VCard.append("ADR:;;Via Naples 23;milano;mi;3993;Italy\r\n");
    VCard.append("ADR;WORK:;;Via Roma;New york;NY;20111;Italy\r\n");    
    VCard.append(" /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQY\r\n");
    VCard.append(" GBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYa\r\n");
    VCard.append(" KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAAR\r\n");
    VCard.append(" CAA2AEgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA\r\n");
    VCard.append(" AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK\r\n");
    VCard.append(" FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG\r\n");
    VCard.append(" h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl\r\n");
    VCard.append(" 5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA\r\n");
    VCard.append(" AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk\r\n");
    VCard.append(" NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE\r\n");
    VCard.append(" hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk\r\n");
    VCard.append(" 5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCfxl4r1qy8S69Aut61bW9vqMysHmlCRxu7\r\n");
    VCard.append(" BSrKeFHbsBjpivOm8d+KAQreJtdSVE8uRW1CbnGSJFGemB+tbXxIef8A4THxCDaXAjF/dees\r\n");
    VCard.append(" t1tjuYhMxG0Z4xXnN9dwNAkTTJIAodFlRi6jkbAfoc14+HUuaTu3r/X9Py6n0s3FQjdJaLdW\r\n");
    VCard.append(" v99vw8007pnZaf418TSW0lxceK9eUjaVRb6U9eSuN3pjmki8beKhOF/4SnWAQcfNqExAx1zg\r\n");
    VCard.append(" +tcL9qMSxqc+WoABxt8zBwMep55zVyzlclwxJl+6Y2kC/MTnp3rrcZK7uYQ5FJJr+v8AhtvT\r\n");
    VCard.append(" RbHoFn4z8Qmf7NL4p1tVbBybyRmLHsDngZ7VqP4p8SxHYfEOsEoNzn7bIck9FHzVx8Yit7SL\r\n");
    VCard.append(" M8Ksko3nAZ93XgDqK1IyWRbi4iaNC2Y1I+82eGPevLrTle6bsfTYKEGuWpFX7WX9fgj0f4Z+\r\n");
    VCard.append(" JvEUt4H1PWLtrQnGLudmLk9hk9q91tpJpFBM0hyP7xr5d8MTeVqcVzK4Yq3yjzAQzemK+gdD\r\n");
    VCard.append(" 1rdax+YArY5Gc0YfFqM3GbPJzvDLn5qaXyRuam1wIG8ueVTjqrkUVXudQR4D0NFTipxlO6kz\r\n");
    VCard.append(" yKMZRjZo+WvippZi8c+JmW1VojcTytLdTEj5nJJQdsE4xXBXxaaCZ/tE5DwxmIvags4UjO0j\r\n");
    VCard.append(" oB616f43uGfxX4kgtrW5ucalcfajcSfucea2wY9B1Fcrb6LfraahdWs4lkgk+zs6yARpCwyy\r\n");
    VCard.append(" qOua0jX9m37R6p/13td/gep7HmpLk6r9H2tffzfmcdNZt5rSIXO9TLBJcDHnJ0IUdM5rRsra\r\n");
    VCard.append(" Ozk+z3Bt4wrhBBeptYbh1LD0qe408vYs9nZSXdhM4jiTBae2VTyfYHnH0rRsoEk3ix1KKW3N\r\n");
    VCard.append(" zGyJqEW5gMdc+ma6Z17x3/r8bf1YzpUXz2S/p3+9PTXW6tcdpVu0LL9k/siEnMRl3FiW9Rxk\r\n");
    VCard.append(" H0NbMiAW28CSWVsh5X65H931qIfZ7JmkkTSkZZyCYY9xX8PQ1oWn+mlfJikmbcWAb5Vj+ntX\r\n");
    VCard.append(" l1qjb5+n9dT6DCwVFa6eX/AsjS8MbIriF7i3jRzgRsyEkfX0r2rSbLzbdCWRmxztrhPDOm2U\r\n");
    VCard.append(" yhZoZI7t1w+GO0H2rfFvq2hvvtibi367T1FdGCnCrHmWp5+Omq0rRdn5nWNpDMuASPoaKqaR\r\n");
    VCard.append(" 4rgmwlwDFJ3Vxiiu7kpvc8Wf1iDs0eA/EMMvjTXZb65kNs+pzq1vFxuVZGxn9K5qNvJSIXu+\r\n");
    VCard.append(" DTZBJNDHGfmJ7Z716r460xpte1u6KIu28lC7x/DvOT+NcI2kXUrtdxx+bDGhTa3Rc+lcDqxb\r\n");
    VCard.append(" l2Tt218vPzPYpwXs1UjLay/K9328kUI9X1HTrm8acGKWdIpIxF91VxjJH40+U3Mas1pcW062\r\n");
    VCard.append(" bY5XDMj8nP0P8q0zp8ttfSK7ec4gCHcP4SOlX38LfZ7dJ4Y1+WMEn+9+FYynSi4tpJy28+nr\r\n");
    VCard.append(" tp8zoVNpqMpb3afXv6f8BGRFFPE2w2tnOEjwzIOSp5/MV19hokl3psN1bOHwmJI06g0umaEl\r\n");
    VCard.append(" 9BHPbRgMRtkUcV13hq2TS5mjePaH4J9az9lOp70d4vVF1a3IrxfvL0Mu0uHtliVt8ciDAY9f\r\n");
    VCard.append(" xrttC1qO5QRXON386XU9Dh1C33KAGxwwrjbizu9Mnw6ttB4YV2fVuR89LR/gedy0sTdrSR6P\r\n");
    VCard.append(" PolpdjeEUk98UVh+GdfLFYZzg9j60V0xrRt76szz6ixFKXKmc349zNq17HnG+7kB+gY0+Cwj\r\n");
    VCard.append(" t9EWNAP3h5OKKK4cVBLAysuv6nYm44KFjMnsEGtIGwQVCn3Fbt1pccKrCrHZ5fGaKKzx0I+x\r\n");
    VCard.append(" oytqmjbEzkvZ2ZmeGv8ARL+SEcrursrqySWLfwDiiiu+OlZ27E4ttVE0P0K9dJTbv8wHQ1t3\r\n");
    VCard.append(" enw3MeWUc+tFFdrSaPNxPuVLx0OcvdHht2LxYUj0ooorwsVJqpodMJykk2z/2Q==\r\n");
    VCard.append("\r\n");        
    VCard.append("X-ANNIVERSARY:20100902\r\n");
    VCard.append("X-FUNAMBOL-BILLINGINFO:\r\n");
    VCard.append("TEL;X-FUNAMBOL-CALLBACK:5555555555\r\n");
    VCard.append("X-FUNAMBOL-CHILDREN:\r\n");
    VCard.append("X-FUNAMBOL-COMPANIES:\r\n");
    VCard.append("X-FUNAMBOL-FOLDER:DEFAULT_FOLDER\r\n");
    VCard.append("X-FUNAMBOL-HOBBIES:\r\n");
    VCard.append("EMAIL;INTERNET;HOME;X-FUNAMBOL-INSTANTMESSENGER:IMaddress\r\n");
    VCard.append("X-FUNAMBOL-INITIALS:P.M.P.\r\n");
    VCard.append("X-FUNAMBOL-LANGUAGES:\r\n");
    VCard.append("X-MANAGER:managerName\r\n");
    VCard.append("X-FUNAMBOL-MILEAGE:\r\n");
    VCard.append("X-FUNAMBOL-ORGANIZATIONALID:\r\n");
    VCard.append("TEL;X-FUNAMBOL-RADIO:1717171717\r\n");
    VCard.append("X-SPOUSE:spuse\r\n");
    VCard.append("X-FUNAMBOL-SUBJECT:Paolino Middle Paperino suffix\r\n");
    VCard.append("TEL;X-FUNAMBOL-TELEX:1181818181818\r\n");
    VCard.append("X-FUNAMBOL-YOMICOMPANYNAME:\r\n");
    VCard.append("X-FUNAMBOL-YOMIFIRSTNAME:\r\n");
    VCard.append("X-FUNAMBOL-YOMILASTNAME:\r\n");
    VCard.append("END:VCARD");

    item = new SyncItem(TEXT("GUID"));
    item->setData(VCard.c_str(), VCard.length());
    
    // insert test item
    ret = ss->addItem(*item);
    WIN_ASSERT_EQUAL(ret, 201, TEXT("Adding item is not correct"));    
    internalKey = (WCHAR*)item->getKey();
    
    //
    // remove work and car tel number
    //
    VCard.reset();
    VCard.append("BEGIN:VCARD\r\n");
    VCard.append("VERSION:2.1\r\n");
    VCard.append("N:Paperino;Paolino;Middle;Mr.;suffix\r\n");    
    VCard.append("PHOTO;ENCODING=b;TYPE=JPEG:\r\n");
    VCard.append(" /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQY\r\n");
    VCard.append(" GBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYa\r\n");
    VCard.append(" KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAAR\r\n");
    VCard.append(" CAA2AEgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA\r\n");
    VCard.append(" AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK\r\n");
    VCard.append(" FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG\r\n");
    VCard.append(" h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl\r\n");
    VCard.append(" 5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA\r\n");
    VCard.append(" AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk\r\n");
    VCard.append(" NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE\r\n");
    VCard.append(" hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk\r\n");
    VCard.append(" 5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCfxl4r1qy8S69Aut61bW9vqMysHmlCRxu7\r\n");
    VCard.append(" BSrKeFHbsBjpivOm8d+KAQreJtdSVE8uRW1CbnGSJFGemB+tbXxIef8A4THxCDaXAjF/dees\r\n");
    VCard.append(" t1tjuYhMxG0Z4xXnN9dwNAkTTJIAodFlRi6jkbAfoc14+HUuaTu3r/X9Py6n0s3FQjdJaLdW\r\n");
    VCard.append(" v99vw8007pnZaf418TSW0lxceK9eUjaVRb6U9eSuN3pjmki8beKhOF/4SnWAQcfNqExAx1zg\r\n");
    VCard.append(" +tcL9qMSxqc+WoABxt8zBwMep55zVyzlclwxJl+6Y2kC/MTnp3rrcZK7uYQ5FJJr+v8AhtvT\r\n");
    VCard.append(" RbHoFn4z8Qmf7NL4p1tVbBybyRmLHsDngZ7VqP4p8SxHYfEOsEoNzn7bIck9FHzVx8Yit7SL\r\n");
    VCard.append(" M8Ksko3nAZ93XgDqK1IyWRbi4iaNC2Y1I+82eGPevLrTle6bsfTYKEGuWpFX7WX9fgj0f4Z+\r\n");
    VCard.append(" JvEUt4H1PWLtrQnGLudmLk9hk9q91tpJpFBM0hyP7xr5d8MTeVqcVzK4Yq3yjzAQzemK+gdD\r\n");
    VCard.append(" 1rdax+YArY5Gc0YfFqM3GbPJzvDLn5qaXyRuam1wIG8ueVTjqrkUVXudQR4D0NFTipxlO6kz\r\n");
    VCard.append(" yKMZRjZo+WvippZi8c+JmW1VojcTytLdTEj5nJJQdsE4xXBXxaaCZ/tE5DwxmIvags4UjO0j\r\n");
    VCard.append(" oB616f43uGfxX4kgtrW5ucalcfajcSfucea2wY9B1Fcrb6LfraahdWs4lkgk+zs6yARpCwyy\r\n");
    VCard.append(" qOua0jX9m37R6p/13td/gep7HmpLk6r9H2tffzfmcdNZt5rSIXO9TLBJcDHnJ0IUdM5rRsra\r\n");
    VCard.append(" Ozk+z3Bt4wrhBBeptYbh1LD0qe408vYs9nZSXdhM4jiTBae2VTyfYHnH0rRsoEk3ix1KKW3N\r\n");
    VCard.append(" zGyJqEW5gMdc+ma6Z17x3/r8bf1YzpUXz2S/p3+9PTXW6tcdpVu0LL9k/siEnMRl3FiW9Rxk\r\n");
    VCard.append(" H0NbMiAW28CSWVsh5X65H931qIfZ7JmkkTSkZZyCYY9xX8PQ1oWn+mlfJikmbcWAb5Vj+ntX\r\n");
    VCard.append(" l1qjb5+n9dT6DCwVFa6eX/AsjS8MbIriF7i3jRzgRsyEkfX0r2rSbLzbdCWRmxztrhPDOm2U\r\n");
    VCard.append(" yhZoZI7t1w+GO0H2rfFvq2hvvtibi367T1FdGCnCrHmWp5+Omq0rRdn5nWNpDMuASPoaKqaR\r\n");
    VCard.append(" 4rgmwlwDFJ3Vxiiu7kpvc8Wf1iDs0eA/EMMvjTXZb65kNs+pzq1vFxuVZGxn9K5qNvJSIXu+\r\n");
    VCard.append(" DTZBJNDHGfmJ7Z716r460xpte1u6KIu28lC7x/DvOT+NcI2kXUrtdxx+bDGhTa3Rc+lcDqxb\r\n");
    VCard.append(" l2Tt218vPzPYpwXs1UjLay/K9328kUI9X1HTrm8acGKWdIpIxF91VxjJH40+U3Mas1pcW062\r\n");
    VCard.append(" bY5XDMj8nP0P8q0zp8ttfSK7ec4gCHcP4SOlX38LfZ7dJ4Y1+WMEn+9+FYynSi4tpJy28+nr\r\n");
    VCard.append(" tp8zoVNpqMpb3afXv6f8BGRFFPE2w2tnOEjwzIOSp5/MV19hokl3psN1bOHwmJI06g0umaEl\r\n");
    VCard.append(" 9BHPbRgMRtkUcV13hq2TS5mjePaH4J9az9lOp70d4vVF1a3IrxfvL0Mu0uHtliVt8ciDAY9f\r\n");
    VCard.append(" xrttC1qO5QRXON386XU9Dh1C33KAGxwwrjbizu9Mnw6ttB4YV2fVuR89LR/gedy0sTdrSR6P\r\n");
    VCard.append(" PolpdjeEUk98UVh+GdfLFYZzg9j60V0xrRt76szz6ixFKXKmc349zNq17HnG+7kB+gY0+Cwj\r\n");
    VCard.append(" t9EWNAP3h5OKKK4cVBLAysuv6nYm44KFjMnsEGtIGwQVCn3Fbt1pccKrCrHZ5fGaKKzx0I+x\r\n");
    VCard.append(" oytqmjbEzkvZ2ZmeGv8ARL+SEcrursrqySWLfwDiiiu+OlZ27E4ttVE0P0K9dJTbv8wHQ1t3\r\n");
    VCard.append(" enw3MeWUc+tFFdrSaPNxPuVLx0OcvdHht2LxYUj0ooorwsVJqpodMJykk2z/2Q==\r\n");
    VCard.append("\r\n");        
    VCard.append("END:VCARD");
    
    // update item
    item->setData(VCard.c_str(), VCard.length());
    WinContact* winC = updateOutlookItem(ss, item);
    WIN_ASSERT_NOT_NULL(winC, TEXT("The item retrieved from the backend is null."));
    
    // check some modifications

    winC->getProperty(L"Email1Address", propValue);
    WIN_ASSERT_TRUE(propValue.empty(), TEXT("The Email2Address is not null"));
    winC->getProperty(L"Email3Address", propValue);
    WIN_ASSERT_TRUE(propValue.empty(), TEXT("The Email3Address is not null"));  
    winC->getProperty(L"Email2Address", propValue);
    WIN_ASSERT_TRUE(propValue.empty(), TEXT("The Email2Address is not null"));
    winC->getProperty(L"Birthday", propValue);
    WIN_ASSERT_TRUE(propValue.empty(), TEXT("The Birthday is not null")); 
    winC->getProperty(L"OtherAddress", propValue);
    WIN_ASSERT_TRUE(propValue.empty(), TEXT("The OtherAddress is not null")); 
    winC->getProperty(L"MobileTelephoneNumber", propValue);
    WIN_ASSERT_TRUE(propValue.empty(), TEXT("The MobileTelephoneNumber is not null"));
    winC->getProperty(L"Photo", propValue);
    WIN_ASSERT_TRUE(!propValue.empty(), TEXT("The BusinessAddress is not null"));         

    delete winC;
   
    //
    // delete the test item
    // 
    ret = ss->deleteItem(*item);
    WIN_ASSERT_EQUAL(ret, 200, TEXT("delete item is not correct"));

    delete item;
    
}
END_TEST


/**
* The test must be executed with an already installed Outlook client
*/
BEGIN_TEST(WinContactRemoveEmail)
{
    int ret = 0;
    SyncItem* item = NULL;
    WCHAR* internalKey = NULL;
    wstring propValue; 

    WindowsSyncSource* ss = createContactWindowsSyncSource();   
    WIN_ASSERT_NOT_NULL(ss, TEXT("The syncSource is null."));

    StringBuffer VCard;
    VCard.append("BEGIN:VCARD\r\n");
    VCard.append("VERSION:2.1\r\n");
    VCard.append("N:Paperino;Paolino;Middle;Mr.;suffix\r\n");
    VCard.append("BDAY:20100901\r\n");
    VCard.append("TEL;WORK;FAX:4444444444\r\n");
    VCard.append("TEL;VOICE;WORK:22222222222\r\n");
    VCard.append("TEL;VOICE;WORK:333333333333\r\n");
    VCard.append("TEL;CAR;VOICE:66666666666\r\n");
    VCard.append("EMAIL;INTERNET:[email protected]\r\n");
    VCard.append("EMAIL;INTERNET;HOME:[email protected]\r\n");
    VCard.append("EMAIL;INTERNET;WORK:[email protected]\r\n");
    VCard.append("ADR;HOME:;;Via Riviera 55;pavia;pv;27100;Italy\r\n");
    VCard.append("ADR:;;Via Naples 23;milano;mi;3993;Italy\r\n");
    VCard.append("ADR;WORK:;;Via Roma;New york;NY;20111;Italy\r\n");
    VCard.append("END:VCARD");

    item = new SyncItem(TEXT("GUID"));
    item->setData(VCard.c_str(), VCard.length());
    
    // insert test item
    ret = ss->addItem(*item);
    WIN_ASSERT_EQUAL(ret, 201, TEXT("Adding item is not correct"));    
    internalKey = (WCHAR*)item->getKey();
    
    //
    // remove work and car tel number
    //
    VCard.reset();
    VCard.append("BEGIN:VCARD\r\n");
    VCard.append("VERSION:2.1\r\n");
    VCard.append("N:Paperino;Paolino;Middle;Mr.;suffix\r\n");
    VCard.append("TEL;WORK;FAX:4444444444\r\n");
    VCard.append("TEL;VOICE;WORK:22222222222\r\n");
    VCard.append("TEL;VOICE;WORK:333333333333\r\n");
    VCard.append("TEL;CAR;VOICE:66666666666\r\n");
    VCard.append("EMAIL;INTERNET;HOME:[email protected]\r\n");
    VCard.append("ADR;HOME:;;Via Riviera 55;pavia;pv;27100;Italy\r\n");
    VCard.append("ADR;WORK:;;Via Roma;New york;NY;20111;Italy\r\n");
    VCard.append("END:VCARD");
    
    // update item
    item->setData(VCard.c_str(), VCard.length());
    WinContact* winC = updateOutlookItem(ss, item);
    WIN_ASSERT_NOT_NULL(winC, TEXT("The item retrieved from the backend is null."));
    
    // check modifications
    // Mapping is:
    // Email1Address <-> EMAIL;INTERNET:
    // Email2Address <-> EMAIL;INTERNET;HOME:
    // Email3Address <-> EMAIL;INTERNET;WORK:

    winC->getProperty(L"Email1Address", propValue);
    WIN_ASSERT_TRUE(propValue.empty(), TEXT("The Email2Address is not null"));
    winC->getProperty(L"Email3Address", propValue);
    WIN_ASSERT_TRUE(propValue.empty(), TEXT("The Email3Address is not null"));  
    winC->getProperty(L"Birthday", propValue);
    WIN_ASSERT_TRUE(propValue.empty(), TEXT("The Birthday is not null")); 
    winC->getProperty(L"OtherAddress", propValue);
    WIN_ASSERT_TRUE(propValue.empty(), TEXT("The OtherAddress is not null")); 
    delete winC;
    
    //
    // remove one work tel number
    //
    VCard.reset();
    VCard.reset();
    VCard.append("BEGIN:VCARD\r\n");
    VCard.append("VERSION:2.1\r\n");
    VCard.append("N:Paperino;Paolino;Middle;Mr.;suffix\r\n");
    VCard.append("TEL;WORK;FAX:4444444444\r\n");
    VCard.append("TEL;VOICE;WORK:22222222222\r\n");
    VCard.append("TEL;VOICE;WORK:333333333333\r\n");
    VCard.append("TEL;CAR;VOICE:66666666666\r\n");
    VCard.append("EMAIL;INTERNET;HOME:[email protected]\r\n");
    VCard.append("END:VCARD");

    item->setData(VCard.c_str(), VCard.length());
    winC = updateOutlookItem(ss, item);
    WIN_ASSERT_NOT_NULL(winC, TEXT("The item retrieved from the backend is null."));
    
    winC->getProperty(L"HomeAddress", propValue);
    WIN_ASSERT_TRUE(propValue.empty(), TEXT("The HomeAddress is not null")); 
    winC->getProperty(L"BusinessAddress", propValue);
    WIN_ASSERT_TRUE(propValue.empty(), TEXT("The BusinessAddress is not null")); 
    delete winC;
    
    //
    // delete the test item
    // 
    ret = ss->deleteItem(*item);
    WIN_ASSERT_EQUAL(ret, 200, TEXT("delete item is not correct"));

    delete item;
    delete ss;
    
}
Ejemplo n.º 16
0
END_TEST
BEGIN_TEST(ItemTestIsInteractable4)
{
	WIN_ASSERT_TRUE(i2.canInteractWithItem(i4));
}
END_TESTF

BEGIN_TESTF(initialize_1, SharedMemoryInitializeFixture)
{
	WIN_ASSERT_TRUE(Initialize(1));
}
Ejemplo n.º 18
0
}END_TESTF

// divu1 ノーマル
BEGIN_TESTF(r5900_mmi_divu1_001, r5900_mmi_fix_01){
  try
  {
    OPEN_ELF("mmi");
    INIT_GPR(0xcccccccc);
    g_cpu->m_hi.d[3] = g_cpu->m_hi.d[2] = g_cpu->m_hi.d[1] = g_cpu->m_hi.d[0] = 0xcccccccc;
    g_cpu->m_lo.d[3] = g_cpu->m_lo.d[2] = g_cpu->m_lo.d[1] = g_cpu->m_lo.d[0] = 0xcccccccc;

    g_cpu->m_t0.d[0] = 0x00000045; g_cpu->m_s0.d[0] = 0x00000020;  // 被除数が正・除数が正
    g_cpu->m_t1.d[0] = 0xfffffffd; g_cpu->m_s1.d[0] = 0x00000002;  // 被除数が負・除数が正
    g_cpu->m_t2.d[0] = 0xfffffffd; g_cpu->m_s2.d[0] = 0xfffffffe;  // 被除数が負・除数が負
    g_cpu->m_t3.d[0] = 0x00000003; g_cpu->m_s3.d[0] = 0xfffffffe;  // 被除数が正・除数が負

    g_cpu->m_t4.d[0] = 0x00001234; g_cpu->m_s4.d[0] = 0x00000000;  // 0除算
    g_cpu->m_t5.d[0] = 0x40000000; g_cpu->m_s5.d[0] = 0x00000001;  // 1除算 商が正
    g_cpu->m_t6.d[0] = 0x80000000; g_cpu->m_s6.d[0] = 0x00000001;  // 1除算 商が負

    g_cpu->execute();
    WIN_ASSERT_TRUE(g_cpu->m_s0.d[1] == 0x00000000 && g_cpu->m_s0.d[0] == 0x00000005);  // hi 余
    WIN_ASSERT_TRUE(g_cpu->m_t0.d[1] == 0x00000000 && g_cpu->m_t0.d[0] == 0x00000002);  // lo 商
    
    WIN_ASSERT_TRUE(g_cpu->m_s1.d[1] == 0x00000000 && g_cpu->m_s1.d[0] == 0x00000001);  // hi 余
    WIN_ASSERT_TRUE(g_cpu->m_t1.d[1] == 0x00000000 && g_cpu->m_t1.d[0] == 0x7ffffffe);  // lo 商

    WIN_ASSERT_TRUE(g_cpu->m_s2.d[1] == 0xffffffff && g_cpu->m_s2.d[0] == 0xfffffffd);  // hi 余
    WIN_ASSERT_TRUE(g_cpu->m_t2.d[1] == 0x00000000 && g_cpu->m_t2.d[0] == 0x00000000);  // lo 商

    WIN_ASSERT_TRUE(g_cpu->m_s3.d[1] == 0x00000000 && g_cpu->m_s3.d[0] == 0x00000003);  // hi 余
    WIN_ASSERT_TRUE(g_cpu->m_t3.d[1] == 0x00000000 && g_cpu->m_t3.d[0] == 0x00000000);  // lo 商
    
    // 0除算はhi, loが変化しないので前回の演算結果と同じものが格納される。念のためチェック
    WIN_ASSERT_TRUE(g_cpu->m_s4.d[1] == 0x00000000 && g_cpu->m_s4.d[0] == 0x00000003);  // hi 余
    WIN_ASSERT_TRUE(g_cpu->m_t4.d[1] == 0x00000000 && g_cpu->m_t4.d[0] == 0x00000000);  // lo 商

    WIN_ASSERT_TRUE(g_cpu->m_s5.d[1] == 0x00000000 && g_cpu->m_s5.d[0] == 0x00000000);  // hi 余
    WIN_ASSERT_TRUE(g_cpu->m_t5.d[1] == 0x00000000 && g_cpu->m_t5.d[0] == 0x40000000);  // lo 商

    WIN_ASSERT_TRUE(g_cpu->m_s6.d[1] == 0x00000000 && g_cpu->m_s6.d[0] == 0x00000000);  // hi 余
    WIN_ASSERT_TRUE(g_cpu->m_t6.d[1] == 0xffffffff && g_cpu->m_t6.d[0] == 0x80000000);  // lo 商

    WIN_ASSERT_TRUE(g_cpu->m_s6.d[1] == g_cpu->m_hi.d[3] && g_cpu->m_s6.d[0] == g_cpu->m_hi.d[2]);  // hi
    WIN_ASSERT_TRUE(g_cpu->m_t6.d[1] == g_cpu->m_lo.d[3] && g_cpu->m_t6.d[0] == g_cpu->m_lo.d[2]);  // lo
  }
  catch (char* msg) { WIN_ASSERT_FAIL(msg); }
}END_TESTF
Ejemplo n.º 19
0
}END_TESTF

// sllv srlv srav ノーマル
BEGIN_TESTF(r5900_special_sllv_srlv_srav_001, r5900_special_fix_01)
{
  try
  {
    OPEN_ELF("special");
    INIT_GPR(0xcccccccc);
    g_cpu->m_v0.d[1] = 0x00000000; g_cpu->m_v0.d[0] = 0x92348765;
    g_cpu->m_v1.d[1] = 0x00000000; g_cpu->m_v1.d[0] = 0x12348765;

    g_cpu->m_a0.d[0] = 0xff000000;
    g_cpu->m_a1.d[0] = 0xff000001;
    g_cpu->m_a2.d[0] = 0xffff0010;
    g_cpu->m_a3.d[0] = 0xffff001f;

    g_cpu->execute();
    WIN_ASSERT_TRUE(g_cpu->m_t0.d[1] == 0xffffffff && g_cpu->m_t0.d[0] == 0x92348765);
    WIN_ASSERT_TRUE(g_cpu->m_t1.d[1] == 0x00000000 && g_cpu->m_t1.d[0] == 0x24690eca);
    WIN_ASSERT_TRUE(g_cpu->m_t2.d[1] == 0xffffffff && g_cpu->m_t2.d[0] == 0x87650000);
    WIN_ASSERT_TRUE(g_cpu->m_t3.d[1] == 0xffffffff && g_cpu->m_t3.d[0] == 0x80000000);

    WIN_ASSERT_TRUE(g_cpu->m_s0.d[1] == 0xffffffff && g_cpu->m_s0.d[0] == 0x92348765);
    WIN_ASSERT_TRUE(g_cpu->m_s1.d[1] == 0x00000000 && g_cpu->m_s1.d[0] == 0x491a43b2);
    WIN_ASSERT_TRUE(g_cpu->m_s2.d[1] == 0x00000000 && g_cpu->m_s2.d[0] == 0x00009234);
    WIN_ASSERT_TRUE(g_cpu->m_s3.d[1] == 0x00000000 && g_cpu->m_s3.d[0] == 0x00000001);

    WIN_ASSERT_TRUE(g_cpu->m_s4.d[1] == 0xffffffff && g_cpu->m_s4.d[0] == 0x92348765);
    WIN_ASSERT_TRUE(g_cpu->m_s5.d[1] == 0xffffffff && g_cpu->m_s5.d[0] == 0xc91a43b2);
    WIN_ASSERT_TRUE(g_cpu->m_s6.d[1] == 0x00000000 && g_cpu->m_s6.d[0] == 0x12348765);
    WIN_ASSERT_TRUE(g_cpu->m_s7.d[1] == 0x00000000 && g_cpu->m_s7.d[0] == 0x091a43b2);
  }
  catch (char* msg) { WIN_ASSERT_FAIL(msg); }
}END_TESTF
Ejemplo n.º 20
0
}END_TESTF

// and or xor nor ノーマル
BEGIN_TESTF(r5900_special_and_or_xor_nor_001, r5900_special_fix_01)
{
  try
  {
    OPEN_ELF("special");
    INIT_GPR(0xcccccccc);
    g_cpu->m_v0.d[1] = 0x0000ffff; g_cpu->m_v0.d[0] = 0xff00ff00;
    g_cpu->m_v1.d[1] = 0x00000000; g_cpu->m_v1.d[0] = 0x00000000;
    g_cpu->m_s0.d[1] = 0x12345678; g_cpu->m_s0.d[0] = 0x12345678;

    g_cpu->m_a0.d[1] = 0x0000ffff; g_cpu->m_a0.d[0] = 0xff00ff00;
    g_cpu->m_a1.d[1] = 0x0000ffff; g_cpu->m_a1.d[0] = 0xff00ff00;
    g_cpu->m_a2.d[1] = 0x0000ffff; g_cpu->m_a2.d[0] = 0xff00ff00;
    g_cpu->m_a3.d[1] = 0x0000ffff; g_cpu->m_a3.d[0] = 0xff00ff00;

    g_cpu->execute();
    WIN_ASSERT_TRUE(g_cpu->m_t0.d[1] == 0x00005678 && g_cpu->m_t0.d[0] == 0x12005600);
    WIN_ASSERT_TRUE(g_cpu->m_t1.d[1] == 0x00000000 && g_cpu->m_t1.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_t2.d[1] == 0x1234ffff && g_cpu->m_t2.d[0] == 0xff34ff78);
    WIN_ASSERT_TRUE(g_cpu->m_t3.d[1] == 0x12345678 && g_cpu->m_t3.d[0] == 0x12345678);
    WIN_ASSERT_TRUE(g_cpu->m_t4.d[1] == 0x1234a987 && g_cpu->m_t4.d[0] == 0xed34a978);
    WIN_ASSERT_TRUE(g_cpu->m_t5.d[1] == 0x12345678 && g_cpu->m_t5.d[0] == 0x12345678);
    WIN_ASSERT_TRUE(g_cpu->m_t6.d[1] == 0xedcb0000 && g_cpu->m_t6.d[0] == 0x00cb0087);
    WIN_ASSERT_TRUE(g_cpu->m_t7.d[1] == 0xedcba987 && g_cpu->m_t7.d[0] == 0xedcba987);

    WIN_ASSERT_TRUE(g_cpu->m_a0.d[1] == 0x00005678 && g_cpu->m_a0.d[0] == 0x12005600);
    WIN_ASSERT_TRUE(g_cpu->m_a1.d[1] == 0x1234ffff && g_cpu->m_a1.d[0] == 0xff34ff78);
    WIN_ASSERT_TRUE(g_cpu->m_a2.d[1] == 0x1234a987 && g_cpu->m_a2.d[0] == 0xed34a978);
    WIN_ASSERT_TRUE(g_cpu->m_a3.d[1] == 0xedcb0000 && g_cpu->m_a3.d[0] == 0x00cb0087);
  }
  catch (char* msg) { WIN_ASSERT_FAIL(msg); }
}END_TESTF
Ejemplo n.º 21
0
}END_TESTF

// sltu ノーマル&オーバーフロー
BEGIN_TESTF(r5900_special_sltu_001, r5900_special_fix_01)
{
  try
  {
    OPEN_ELF("special");
    INIT_GPR(0xcccccccc);
    g_cpu->m_t0.d[1] = 0x00000000; g_cpu->m_t0.d[0] = 0x00000000;
    g_cpu->m_t1.d[1] = 0x00000000; g_cpu->m_t1.d[0] = 0x00000001;
    g_cpu->m_t2.d[1] = 0xffffffff; g_cpu->m_t2.d[0] = 0xffffffff;
    g_cpu->m_t3.d[1] = 0x7fffffff; g_cpu->m_t3.d[0] = 0x00000000;  // 上位WORDオーバーフロー+
    g_cpu->m_t4.d[1] = 0x80000000; g_cpu->m_t4.d[0] = 0x00000000;  // 上位WORDオーバーフロー-
    g_cpu->m_t5.d[1] = 0x00000000; g_cpu->m_t5.d[0] = 0x7fffffff;  // 下位WORDオーバーフロー+
    g_cpu->m_t6.d[1] = 0x00000000; g_cpu->m_t6.d[0] = 0x80000000;  // 下位WORDオーバーフロー-
    g_cpu->m_t7.d[1] = 0x00000001; g_cpu->m_t7.d[0] = 0x00000000;  // 上位WORDでの大小比較

    g_cpu->m_v0.d[1] = 0x00000000; g_cpu->m_v0.d[0] = 0x00000001;
    g_cpu->m_v1.d[1] = 0xffffffff; g_cpu->m_v1.d[0] = 0xffffffff;

    g_cpu->m_k0.d[1] = 0x00000000; g_cpu->m_k0.d[0] = 0x00000000;
    g_cpu->m_k1.d[1] = 0x00000002; g_cpu->m_k1.d[0] = 0x00000000;

    g_cpu->execute();
    WIN_ASSERT_TRUE(g_cpu->m_a0.d[1] == 0x00000000 && g_cpu->m_a0.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_a1.d[1] == 0x00000000 && g_cpu->m_a1.d[0] == 0x00000001);
    WIN_ASSERT_TRUE(g_cpu->m_a2.d[1] == 0x00000000 && g_cpu->m_a2.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_a3.d[1] == 0x00000000 && g_cpu->m_a3.d[0] == 0x00000001);

    WIN_ASSERT_TRUE(g_cpu->m_s0.d[1] == 0x00000000 && g_cpu->m_s0.d[0] == 0x00000001);
    WIN_ASSERT_TRUE(g_cpu->m_s1.d[1] == 0x00000000 && g_cpu->m_s1.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_s2.d[1] == 0x00000000 && g_cpu->m_s2.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_s3.d[1] == 0x00000000 && g_cpu->m_s3.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_s4.d[1] == 0x00000000 && g_cpu->m_s4.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_s5.d[1] == 0x00000000 && g_cpu->m_s5.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_s6.d[1] == 0x00000000 && g_cpu->m_s6.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_s7.d[1] == 0x00000000 && g_cpu->m_s7.d[0] == 0x00000000);

    WIN_ASSERT_TRUE(g_cpu->m_t0.d[1] == 0x00000000 && g_cpu->m_t0.d[0] == 0x00000001);
    WIN_ASSERT_TRUE(g_cpu->m_t1.d[1] == 0x00000000 && g_cpu->m_t1.d[0] == 0x00000001);
    WIN_ASSERT_TRUE(g_cpu->m_t2.d[1] == 0x00000000 && g_cpu->m_t2.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_t3.d[1] == 0x00000000 && g_cpu->m_t3.d[0] == 0x00000001);
    WIN_ASSERT_TRUE(g_cpu->m_t4.d[1] == 0x00000000 && g_cpu->m_t4.d[0] == 0x00000001);
    WIN_ASSERT_TRUE(g_cpu->m_t5.d[1] == 0x00000000 && g_cpu->m_t5.d[0] == 0x00000001);
    WIN_ASSERT_TRUE(g_cpu->m_t6.d[1] == 0x00000000 && g_cpu->m_t6.d[0] == 0x00000001);
    WIN_ASSERT_TRUE(g_cpu->m_t7.d[1] == 0x00000000 && g_cpu->m_t7.d[0] == 0x00000001);
  }
  catch (char* msg) { WIN_ASSERT_FAIL(msg); }
}END_TESTF
Ejemplo n.º 22
0
}END_TESTF

// dsra dsra32 ノーマル
BEGIN_TESTF(r5900_special_dsra_dsra32_001, r5900_special_fix_01)
{
  try
  {
    OPEN_ELF("special");
    INIT_GPR(0xcccccccc);
    g_cpu->m_a0.d[1] = 0x01234567; g_cpu->m_a0.d[0] = 0x89abcdef;
    g_cpu->m_a1.d[1] = 0x81234567; g_cpu->m_a1.d[0] = 0x89abcdef;
    g_cpu->execute();
    WIN_ASSERT_TRUE(g_cpu->m_t0.d[1] == 0x01234567 && g_cpu->m_t0.d[0] == 0x89abcdef);
    WIN_ASSERT_TRUE(g_cpu->m_t1.d[1] == 0x0091a2b3 && g_cpu->m_t1.d[0] == 0xc4d5e6f7);
    WIN_ASSERT_TRUE(g_cpu->m_t2.d[1] == 0x00000000 && g_cpu->m_t2.d[0] == 0x02468acf);
    WIN_ASSERT_TRUE(g_cpu->m_t3.d[1] == 0x00000123 && g_cpu->m_t3.d[0] == 0x456789ab);
    WIN_ASSERT_TRUE(g_cpu->m_t4.d[1] == 0x81234567 && g_cpu->m_t4.d[0] == 0x89abcdef);
    WIN_ASSERT_TRUE(g_cpu->m_t5.d[1] == 0xc091a2b3 && g_cpu->m_t5.d[0] == 0xc4d5e6f7);
    WIN_ASSERT_TRUE(g_cpu->m_t6.d[1] == 0xffffffff && g_cpu->m_t6.d[0] == 0x02468acf);
    WIN_ASSERT_TRUE(g_cpu->m_t7.d[1] == 0xffff8123 && g_cpu->m_t7.d[0] == 0x456789ab);

    WIN_ASSERT_TRUE(g_cpu->m_s0.d[1] == 0x00000000 && g_cpu->m_s0.d[0] == 0x01234567);
    WIN_ASSERT_TRUE(g_cpu->m_s1.d[1] == 0x00000000 && g_cpu->m_s1.d[0] == 0x0091a2b3);
    WIN_ASSERT_TRUE(g_cpu->m_s2.d[1] == 0x00000000 && g_cpu->m_s2.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_s3.d[1] == 0x00000000 && g_cpu->m_s3.d[0] == 0x00000123);
    WIN_ASSERT_TRUE(g_cpu->m_s4.d[1] == 0xffffffff && g_cpu->m_s4.d[0] == 0x81234567);
    WIN_ASSERT_TRUE(g_cpu->m_s5.d[1] == 0xffffffff && g_cpu->m_s5.d[0] == 0xc091a2b3);
    WIN_ASSERT_TRUE(g_cpu->m_s6.d[1] == 0xffffffff && g_cpu->m_s6.d[0] == 0xffffffff);
    WIN_ASSERT_TRUE(g_cpu->m_s7.d[1] == 0xffffffff && g_cpu->m_s7.d[0] == 0xffff8123);

    WIN_ASSERT_TRUE(g_cpu->m_a0.d[1] == 0x0091a2b3 && g_cpu->m_a0.d[0] == 0xc4d5e6f7);
    WIN_ASSERT_TRUE(g_cpu->m_a1.d[1] == 0xffffffff && g_cpu->m_a1.d[0] == 0xc091a2b3);
  }
  catch (char* msg) { WIN_ASSERT_FAIL(msg); }
}END_TESTF
Ejemplo n.º 23
0
}END_TESTF

// dadd daddu
BEGIN_TESTF(r5900_special_dadd_daddu_001, r5900_special_fix_01)
{
  try
  {
    OPEN_ELF("special");
    INIT_GPR(0xcccccccc);
    g_cpu->m_s0.d[1] = 0x00123456; g_cpu->m_s0.d[0] = 0x789abcde;
    g_cpu->m_s1.d[1] = 0xffffff11; g_cpu->m_s1.d[0] = 0xffffffff;
    g_cpu->m_s2.d[1] = 0x7fffffff; g_cpu->m_s2.d[0] = 0xffffffff;
    g_cpu->m_s3.d[1] = 0x80000000; g_cpu->m_s3.d[0] = 0x00000000;
    g_cpu->m_s4.d[1] = 0x00000001; g_cpu->m_s4.d[0] = 0x00000000;
    g_cpu->m_s5.d[1] = 0x00000000; g_cpu->m_s5.d[0] = 0xffffffff;
    
    g_cpu->m_a0.d[1] = 0x00edcba9; g_cpu->m_a0.d[0] = 0x87654321;
    g_cpu->m_a1.d[1] = 0x00000000; g_cpu->m_a1.d[0] = 0xffffffff;
    g_cpu->m_a2.d[1] = 0x00000001; g_cpu->m_a2.d[0] = 0x00000000;
    g_cpu->m_a3.d[1] = 0xfffffffe; g_cpu->m_a3.d[0] = 0x00000000;
    g_cpu->m_v0.d[1] = 0xffffffff; g_cpu->m_v0.d[0] = 0xffffffff;
    g_cpu->m_v1.d[1] = 0x00000000; g_cpu->m_v1.d[0] = 0x00000001;

    g_cpu->execute();
    WIN_ASSERT_TRUE(g_cpu->m_t0.d[1] == 0x00ffffff && g_cpu->m_t0.d[0] == 0xffffffff);
    WIN_ASSERT_TRUE(g_cpu->m_t1.d[1] == 0xffffff12 && g_cpu->m_t1.d[0] == 0xfffffffe);
    WIN_ASSERT_TRUE(g_cpu->m_t2.d[1] == 0xcccccccc && g_cpu->m_t2.d[0] == 0xcccccccc);
    WIN_ASSERT_TRUE(g_cpu->m_t3.d[1] == 0xcccccccc && g_cpu->m_t3.d[0] == 0xcccccccc);
    WIN_ASSERT_TRUE(g_cpu->m_t4.d[1] == 0x00000000 && g_cpu->m_t4.d[0] == 0xffffffff);
    WIN_ASSERT_TRUE(g_cpu->m_t5.d[1] == 0x00000001 && g_cpu->m_t5.d[0] == 0x00000000);

    WIN_ASSERT_TRUE(g_cpu->m_t6.d[1] == 0x00ffffff && g_cpu->m_t6.d[0] == 0xffffffff);
    WIN_ASSERT_TRUE(g_cpu->m_t7.d[1] == 0xffffff12 && g_cpu->m_t7.d[0] == 0xfffffffe);
    WIN_ASSERT_TRUE(g_cpu->m_t8.d[1] == 0x80000000 && g_cpu->m_t8.d[0] == 0xffffffff);
    WIN_ASSERT_TRUE(g_cpu->m_t9.d[1] == 0x7ffffffe && g_cpu->m_t9.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_k0.d[1] == 0x00000000 && g_cpu->m_k0.d[0] == 0xffffffff);
    WIN_ASSERT_TRUE(g_cpu->m_k1.d[1] == 0x00000001 && g_cpu->m_k1.d[0] == 0x00000000);
  }
  catch (char* msg) { WIN_ASSERT_FAIL(msg); }
}END_TESTF
Ejemplo n.º 24
0
END_TEST

BEGIN_TEST(ItemTestIsInteractable1)
{
	WIN_ASSERT_TRUE(i1.canInteractWithItem(i3));
}
Ejemplo n.º 25
0
}END_TESTF

// dsub dsubu
BEGIN_TESTF(r5900_special_dsub_dsubu_001, r5900_special_fix_01)
{
  try
  {
    OPEN_ELF("special");
    INIT_GPR(0xcccccccc);
    g_cpu->m_s0.d[1] = 0x01000000; g_cpu->m_s0.d[0] = 0xffffffff;
    g_cpu->m_s1.d[1] = 0x01000000; g_cpu->m_s1.d[0] = 0x00000000;
    g_cpu->m_s2.d[1] = 0x7fffffff; g_cpu->m_s2.d[0] = 0xffffffff;
    g_cpu->m_s3.d[1] = 0x80000000; g_cpu->m_s3.d[0] = 0x00000000;
    g_cpu->m_s4.d[1] = 0x00000001; g_cpu->m_s4.d[0] = 0x00000000;
    g_cpu->m_s5.d[1] = 0x00000000; g_cpu->m_s5.d[0] = 0xffffffff;
    
    g_cpu->m_a0.d[1] = 0x00ffffff; g_cpu->m_a0.d[0] = 0x00000000;
    g_cpu->m_a1.d[1] = 0x02000000; g_cpu->m_a1.d[0] = 0x00000000;
    g_cpu->m_a2.d[1] = 0xffffffff; g_cpu->m_a2.d[0] = 0xffffffff;
    g_cpu->m_a3.d[1] = 0x00000000; g_cpu->m_a3.d[0] = 0x00000001;
    g_cpu->m_v0.d[1] = 0x00000000; g_cpu->m_v0.d[0] = 0x00000001;
    g_cpu->m_v1.d[1] = 0xffffffff; g_cpu->m_v1.d[0] = 0xffffffff;

    g_cpu->execute();
    WIN_ASSERT_TRUE(g_cpu->m_t0.d[1] == 0x00000001 && g_cpu->m_t0.d[0] == 0xffffffff);
    WIN_ASSERT_TRUE(g_cpu->m_t1.d[1] == 0xff000000 && g_cpu->m_t1.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_t2.d[1] == 0xcccccccc && g_cpu->m_t2.d[0] == 0xcccccccc);
    WIN_ASSERT_TRUE(g_cpu->m_t3.d[1] == 0xcccccccc && g_cpu->m_t3.d[0] == 0xcccccccc);
    WIN_ASSERT_TRUE(g_cpu->m_t4.d[1] == 0x00000000 && g_cpu->m_t4.d[0] == 0xffffffff);
    WIN_ASSERT_TRUE(g_cpu->m_t5.d[1] == 0x00000001 && g_cpu->m_t5.d[0] == 0x00000000);

    WIN_ASSERT_TRUE(g_cpu->m_t6.d[1] == 0x00000001 && g_cpu->m_t6.d[0] == 0xffffffff);
    WIN_ASSERT_TRUE(g_cpu->m_t7.d[1] == 0xff000000 && g_cpu->m_t7.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_t8.d[1] == 0x80000000 && g_cpu->m_t8.d[0] == 0x00000000);
    WIN_ASSERT_TRUE(g_cpu->m_t9.d[1] == 0x7fffffff && g_cpu->m_t9.d[0] == 0xffffffff);
    WIN_ASSERT_TRUE(g_cpu->m_k0.d[1] == 0x00000000 && g_cpu->m_k0.d[0] == 0xffffffff);
    WIN_ASSERT_TRUE(g_cpu->m_k1.d[1] == 0x00000001 && g_cpu->m_k1.d[0] == 0x00000000);
  }
  catch (char* msg) { WIN_ASSERT_FAIL(msg); }
}END_TESTF