예제 #1
0
void test_boe_replay_complete(void)
{
	struct boe_message *msg = (void *) recv_buffer;
	struct buffer *buf;
	int fd;

	buf = buffer_new(1024);

	fd = open(DATA_PATH "replay-complete-message.bin", O_RDONLY);
	fail_if(fd < 0);

	fail_if(buffer_xread(buf, fd) < 0);

	fail_if(boe_message_decode(buf, msg, BOE_MAX_MESSAGE_LEN) < 0);

	assert_int_equals(BOE_MAGIC, msg->header.StartOfMessage);
	assert_int_equals(8, msg->header.MessageLength);
	assert_int_equals(ReplayComplete, msg->header.MessageType);
	assert_int_equals(0, msg->header.MatchingUnit);
	assert_int_equals(0, msg->header.SequenceNumber);

	buffer_delete(buf);

	fail_if(close(fd) < 0);
}
예제 #2
0
void basic_test() {
  printf("Basic Test\n");

  int data[SIZE];
  int i;
  for (i = 0; i < SIZE; i++) {
    data[i] = i;
  }

  linked_array la;
  la_create(&la, SIZE);

  assert_true(la_is_empty(&la), "Basic Test Is Empty");

  for (i = 0; i < SIZE; i++) {
    assert_false(la_has_element(&la, i), "Basic Test Pre-Insertion");
    la_insert(&la, i, (void *)&data[i]);
    assert_true(la_has_element(&la, i), "Basic Test Post-Insertion");
    assert_int_equals(data[i], *(int *)la_get_element(&la, i), "Basic Test get_element");
  }

  assert_false(la_is_empty(&la), "Basic Test Is Not Empty");

  for (i = 0; i < SIZE; i++) {
    assert_true(la_has_element(&la, i), "Basic Test Pre-Deletion");
    assert_int_equals(data[i], *(int *)la_head(&la), "Basic Test Head Check");
    la_remove(&la, i);
    assert_false(la_has_element(&la, i), "Basic Test Post-Deletion");
  }

  assert_true(la_is_empty(&la), "Basic Test Is Empty Final");
}
예제 #3
0
void test_cell_add_neighbour(void)
{
	printf("\ntest_cell_add_neighbour\n");
	s_cell cells[4];
	int c, result;
	uint8_t nb_cells;

	nb_cells = 3;
	for (c = 0; c < 4; c++) {
		init_cell(&cells[c], c, nb_cells);
	}

	result = cell_add_neighbour(&cells[0], &cells[1]);
	assert_int_equals(result, CELL_ADD_NEIGHBOUR_OK);
	assert_int_equals(cells[0].nb_neighbours, 1);
	assert_int_equals(cells[1].nb_neighbours, 1);

	result = cell_add_neighbour(&cells[0], &cells[1]);
	assert_int_equals(result, CELL_ERROR_ALREADY_NEIGHBOUR);
	assert_int_equals(cells[0].nb_neighbours, 1);
	assert_int_equals(cells[1].nb_neighbours, 1);

	cell_add_neighbour(&cells[0], &cells[2]);

	result = cell_add_neighbour(&cells[0], &cells[3]);
	assert_int_equals(result, CELL_ERROR_MAX_NEIGHBOURS_REACHED);
	assert_int_equals(cells[0].nb_neighbours, nb_cells - 1);
	assert_int_equals(cells[3].nb_neighbours, 0);

	for (c = 0; c < 4; c++) {
		free_cell(&cells[c]);
	}
}
예제 #4
0
파일: basic_test.c 프로젝트: dzelemba/cs452
static void user_task2() {
  int tid = MyTid();
  assert_int_equals(child_1_tid, tid, "Basic Test: Child Check Tid");

  int p_tid = MyParentTid();
  assert_int_equals(parent_tid, p_tid, "Basic Test: Child Check Parent Tid");

  flag = 1;

  Exit();
}
예제 #5
0
void test_instruction_positions_are_computed_in_basic_block_order(void)
{
	struct compilation_unit *cu = compilation_unit_alloc(&method);
	struct basic_block *b1, *b2;
	struct insn *insns[4];
	unsigned long i;

	for (i = 0; i < ARRAY_SIZE(insns); i++)
		insns[i] = alloc_insn(INSN_ADD);

	b1 = get_basic_block(cu, 0, ARRAY_SIZE(insns)/2);
	for (i = 0 ; i < ARRAY_SIZE(insns) / 2; i++)
		bb_add_insn(b1, insns[i]);

	b2 = get_basic_block(cu, ARRAY_SIZE(insns) / 2, ARRAY_SIZE(insns));
	for (i = ARRAY_SIZE(insns) / 2 ; i < ARRAY_SIZE(insns); i++)
		bb_add_insn(b2, insns[i]);

	compute_insn_positions(cu);

	for (i = 0; i < ARRAY_SIZE(insns); i++)
		assert_int_equals(i * 2, insns[i]->lir_pos);

	free_compilation_unit(cu);
}
예제 #6
0
void test_convert_tableswitch_bbs1(void)
{
	struct basic_block *bb0, *bb1, *bb2, *bb3, *bb4, *bb5, *bb6;
	struct compilation_unit *cu;

	struct cafebabe_method_info method_info;
	struct vm_method method = {
		.code_attribute.code = tableswitch1,
		.code_attribute.code_length = ARRAY_SIZE(tableswitch1),
		.method = &method_info,
	};

	memset(&method_info, 0, sizeof(method_info));

	cu = compilation_unit_alloc(&method);

	analyze_control_flow(cu);
	convert_to_ir(cu);
	assert_int_equals(7, nr_bblocks(cu));

	bb0 = bb_entry(cu->bb_list.next);
	bb1 = bb_entry(bb0->bb_list_node.next);
	bb2 = bb_entry(bb1->bb_list_node.next);
	bb3 = bb_entry(bb2->bb_list_node.next);
	bb4 = bb_entry(bb3->bb_list_node.next);
	bb5 = bb_entry(bb4->bb_list_node.next);
	bb6 = bb_entry(bb5->bb_list_node.next);

	assert_basic_block_successors((struct basic_block*[]){bb6, bb1}, 2, bb0);
	assert_basic_block_successors((struct basic_block*[]){bb6, bb2}, 2, bb1);
예제 #7
0
void test_init_cell(void)
{
	printf("\ntest_init_cell\n");
	s_cell c;
	int result;

	result = init_cell(&c, 1, 4);
	assert_null(c.owner);
	assert_int_equals(result, 1);
	assert_int_equals(c.id, 1);
	assert_int_equals(c.nb_pawns, 0);
	assert_int_equals(c.nb_neighbours, 0);
	assert_int_equals(c.nb_max_neighbours, 3);

	free_cell(&c);
}
예제 #8
0
void test_branch_opcode_ends_basic_block(void)
{
	struct basic_block *bb1, *bb2, *bb3;
	struct compilation_unit *cu;
	struct cafebabe_method_info method_info;
	struct vm_method method = {
		.code_attribute.code = default_string,
		.code_attribute.code_length = ARRAY_SIZE(default_string),
		.method = &method_info,
	};
	
	cu = compilation_unit_alloc(&method);

	analyze_control_flow(cu);

	assert_int_equals(3, nr_bblocks(cu));

	bb1 = bb_entry(cu->bb_list.next);
	bb2 = bb_entry(bb1->bb_list_node.next);
	bb3 = bb_entry(bb2->bb_list_node.next);

	assert_basic_block(cu, 0, 4, bb1);
	assert_basic_block(cu, 4, 7, bb2);
	assert_basic_block(cu, 7, 9, bb3);

	assert_basic_block_successors((struct basic_block*[]){bb2, bb3}, 2, bb1);
	assert_basic_block_successors((struct basic_block*[]){bb3     }, 1, bb2);
예제 #9
0
파일: basic_test.c 프로젝트: dzelemba/cs452
static void user_task3() {
  child_2_tid = MyTid();

  int p_tid = MyParentTid();
  assert_int_equals(parent_tid, p_tid, "Basic Test: Child_2 Check Parent Tid");

  Exit();
}
예제 #10
0
파일: basic_test.c 프로젝트: dzelemba/cs452
static void user_task() {
  did_run = 1;
  parent_tid = MyTid();

  child_1_tid = Create(MED_PRI, &user_task2);

  int p_tid = MyParentTid();
  assert_int_equals(-1, p_tid, "Basic Test: Parent Check Parent Tid");

  Pass();
  assert_int_equals(1, flag, "Basic Test: Parent Check Pass");

  // Let child run first to test that the right return value is returned.
  int tid = Create(HI_PRI, &user_task3);
  assert_int_equals(child_2_tid, tid, "Basic Test: Parent Check Child_2 Tid");

  Exit();
}
예제 #11
0
void test_cell_set_nb_pawns(void)
{
	printf("\ntest_cell_set_nb_pawns\n");
	s_cell c;
	s_player p;
	int result;

	init_cell(&c, 1, 4);
	init_player(&p, 1, "test", 1, STRATEGY_NONE, 10);

	result = cell_set_nb_pawns(&c, 13);
	assert_int_equals(result, CELL_ERROR_SET_PAWNS_NO_OWNER);
	assert_int_equals(c.nb_pawns, 0);
	cell_set_owner(&c, &p);

	result = cell_set_nb_pawns(&c, 13);
	assert_int_equals(result, CELL_ERROR_SET_PAWNS_NOT_ENOUGH_PAWNS);
	assert_int_equals(c.nb_pawns, 0);

	result = cell_set_nb_pawns(&c, 10);
	assert_int_equals(result, CELL_SET_PAWNS_OK);
	assert_int_equals(c.nb_pawns, 10);

	free_cell(&c);
}
예제 #12
0
void test_honors_fixed_interval_register_constraint_for_overlapping_intervals(void)
{
	struct compilation_unit *cu;
	struct var_info *v1, *v2;

	cu = compilation_unit_alloc(&method);

	v1 = get_fixed_var(cu, R0);
	v1->interval->range.start = 0;
	v1->interval->range.end   = 2;

	v2 = get_var(cu);
	v2->interval->range.start = 0;
	v2->interval->range.end   = 2;

	allocate_registers(cu);

	assert_int_equals(R0, v1->interval->reg);
	assert_int_equals(R1, v2->interval->reg);

	free_compilation_unit(cu);
}
예제 #13
0
파일: basic_test.c 프로젝트: dzelemba/cs452
void run_basic_test() {
  char* name = "Basic Test";
  start_test(name);
  flag = 0;
  did_run = 0;

  kernel_add_task(MED_PRI, &user_task);

  kernel_run();

  assert_int_equals(1, did_run, "Basic Test: User Program Never Ran");

  end_test(name);
}
예제 #14
0
void test_cell_are_neighbours(void)
{
	printf("\ntest_cell_are_neighbours\n");
	s_cell cells[3];
	int c;
	uint8_t nb_cells;

	nb_cells = 3;
	for (c = 0; c < 4; c++) {
		init_cell(&cells[c], c, nb_cells);
	}

	cell_add_neighbour(&cells[0], &cells[1]);
	cell_add_neighbour(&cells[1], &cells[2]);

	assert_int_equals(cell_are_neighbours(&cells[0], &cells[1]), 1);
	assert_int_equals(cell_are_neighbours(&cells[1], &cells[2]), 1);
	assert_int_equals(cell_are_neighbours(&cells[0], &cells[2]), 0);

	for (c = 0; c < 3; c++) {
		free_cell(&cells[c]);
	}
}
예제 #15
0
void test_cell_set_owner(void)
{
	printf("\ntest_cell_set_owner\n");
	s_cell c;
	s_player p;
	init_cell(&c, 1, 4);
	init_player(&p, 1, "test", 1, STRATEGY_NONE, 10);

	assert_null(c.owner);
	cell_set_owner(&c, &p);
	assert_str_equals(c.owner->name, "test");
	assert_int_equals(c.owner->nb_cells, 1);

	free_cell(&c);
}
예제 #16
0
static void set_unset_test() {
  printf("Set/Unset Tests\n");

  bitmask bm;
  bm_create(&bm);

  int bit, hi, low;

  hi = 0; low = 0;
  assert_int_equals(hi, bm_gethibit(&bm), "Basic Test Hi 1");
  assert_int_equals(low, bm_getlowbit(&bm), "Basic Test Low 1");

  bit = 5; hi = 5; low = 5;
  bm_set(&bm, bit);
  assert_int_equals(hi, bm_gethibit(&bm), "Basic Test Hi 1");
  assert_int_equals(low, bm_getlowbit(&bm), "Basic Test Low 1");
  assert_true(bm_isset(&bm, bit), "Basic Test isset 1");

  bit = 10; hi = 10; low = 5;
  bm_set(&bm, bit);
  assert_int_equals(hi, bm_gethibit(&bm), "Basic Test Hi 2");
  assert_int_equals(low, bm_getlowbit(&bm), "Basic Test Low 2");
  assert_true(bm_isset(&bm, bit), "Basic Test isset 2");

  bit = 7; hi = 10; low = 5;
  bm_set(&bm, bit);
  assert_int_equals(hi, bm_gethibit(&bm), "Basic Test Hi 3");
  assert_int_equals(low, bm_getlowbit(&bm), "Basic Test Low 2");
  assert_true(bm_isset(&bm, bit), "Basic Test isset 3");

  bit = 5; hi = 10; low = 7;
  bm_unset(&bm, bit);
  assert_int_equals(hi, bm_gethibit(&bm), "Basic Test Hi 3");
  assert_int_equals(low, bm_getlowbit(&bm), "Basic Test Low 2");
  assert_false(bm_isset(&bm, bit), "Basic Test isset 4");
}
예제 #17
0
static void assert_emit_insn(unsigned char *expected,
			     unsigned long expected_size,
			     struct insn *insn)
{
	struct basic_block *bb;
	struct buffer *buf;

	bb = alloc_basic_block(NULL, 0, 1);
	bb_add_insn(bb, insn);

	buf = alloc_buffer();
	emit_body(bb, buf);
	assert_int_equals(expected_size, buffer_offset(buf));
	assert_mem_equals(expected, buffer_ptr(buf), expected_size);

	free_basic_block(bb);
	free_buffer(buf);
}
예제 #18
0
void test_mbt_quote_decode_logging_on(void)
{
	struct mbt_quote_logging_on *logon;

	setup();

	buffer_printf(buf, "L|100=USERNAME;101=PASSWORD\n");

	mbt_msg = mbt_quote_message_decode(buf);

	assert_int_equals(MBT_QUOTE_LOGGING_ON, mbt_msg->Type);

	logon = mbt_quote_message_payload(mbt_msg);

	assert_str_equals("USERNAME", logon->UserName, 8);
	assert_str_equals("PASSWORD", logon->Password, 8);

	teardown();
}
예제 #19
0
void insertion_removal_test() {
  printf("Insertion/Removal Test\n");

  int data[SIZE];
  int i;
  for (i = 0; i < SIZE; i++) {
    data[i] = i;
  }

  linked_array la;
  la_create(&la, SIZE);

  int pos, head;

  pos = 5; head = 5;
  la_insert(&la, pos, (void *)&data[head]);
  assert_int_equals(data[head], *(int *)la_head(&la), "Insertion Test Head Check 1");

  pos = 3; head = 3;
  la_insert(&la, pos, (void *)&data[head]);
  assert_int_equals(data[head], *(int *)la_head(&la), "Insertion Test Head Check 2");

  pos = 4; head = 3;
  la_insert(&la, pos, (void *)&data[head]);
  assert_int_equals(data[head], *(int *)la_head(&la), "Insertion Test Head Check 3");

  pos = 8; head = 3;
  la_insert(&la, pos, (void *)&data[head]);
  assert_int_equals(data[head], *(int *)la_head(&la), "Insertion Test Head Check 4");

  pos = 8; head = 3;
  la_remove(&la, pos);
  assert_int_equals(data[head], *(int *)la_head(&la), "Insertion Test Head Check 4");

  pos = 4; head = 3;
  la_remove(&la, pos);
  assert_int_equals(data[head], *(int *)la_head(&la), "Insertion Test Head Check 4");

  pos = 3; head = 5;
  la_remove(&la, pos);
  assert_int_equals(data[head], *(int *)la_head(&la), "Insertion Test Head Check 4");
}
예제 #20
0
void test_init_player(void)
{
	printf("\ntest_init_player\n");
	s_player p1, p2, p3, p4, p5;
	int result;

	result = init_player(&p1, 1, "my name 1", 1, STRATEGY_NONE, 10);
	assert_int_equals(result, INIT_PLAYER_OK);
	assert_str_equals(p1.name, "my name 1");
	assert_int_equals(p1.id, 1);
	assert_int_equals(p1.nb_cells, 0);
	assert_int_equals(p1.nb_pawns, 10);
	assert_int_equals(p1.strategy, STRATEGY_NONE);
	assert_int_equals(p1.is_human, 1);

	result = init_player(&p2, 2, "my name 2", 1, STRATEGY_OFFENCE, 10);
	assert_int_equals(result, PLAYER_ERROR_INIT_PLAYER_STRATEGY);

	result = init_player(&p3, 3, "my name 3", 0, STRATEGY_NONE, 10);
	assert_int_equals(result, PLAYER_ERROR_INIT_PLAYER_STRATEGY);

	result = init_player(&p4, 4, "my name 4", 0, STRATEGY_SPREAD, 10);
	assert_int_equals(result, INIT_PLAYER_OK);
	assert_str_equals(p4.name, "my name 4");
	assert_int_equals(p4.id, 4);
	assert_int_equals(p4.nb_cells, 0);
	assert_int_equals(p4.nb_pawns, 10);
	assert_int_equals(p4.strategy, STRATEGY_SPREAD);
	assert_int_equals(p4.is_human, 0);
//~
	result = init_player(&p5, 5, "", 1, STRATEGY_NONE, 10);
	assert_int_equals(result, PLAYER_ERROR_INIT_PLAYER_EMPTY_NAME);
}
예제 #21
0
void test_player_move_to_cell(void)
{
	printf("\ntest_player_move_to_cell\n");
	s_cell c1, c2, c3;
	s_player p1, p2;
	short result;

	init_cell(&c1, 1, 3);
	init_cell(&c2, 2, 3);
	init_cell(&c3, 3, 3);
	init_player(&p1, 1, "p1", 1, STRATEGY_NONE, 10);
	init_player(&p2, 2, "p2", 1, STRATEGY_NONE, 10);

	cell_add_neighbour(&c1, &c2);
	cell_add_neighbour(&c2, &c3);

	cell_set_owner(&c1, &p1);
	cell_set_nb_pawns(&c1, 10);
	cell_set_owner(&c3, &p2);
	cell_set_nb_pawns(&c3, 10);

	// test move all pawns from src cell
	result = player_move_to_cell(&p1, 10, &c1, &c2);
	assert_int_equals(result, PLAYER_ERROR_MOVE_ALL_PAWNS);

	// test move too many pawns
	result = player_move_to_cell(&p1, 11, &c1, &c2);
	assert_int_equals(result, PLAYER_ERROR_MOVE_NOT_ENOUGH_PAWNS);

	// test move to a cell too far away
	result = player_move_to_cell(&p1, 1, &c1, &c3);
	assert_int_equals(result, PLAYER_ERROR_MOVE_CELLS_NOT_NEIGHBOURS);

	// move no fight
	assert_int_equals(p1.nb_cells, 1);
	result = player_move_to_cell(&p1, 5, &c1, &c2);
	assert_int_equals(result, NO_FIGHT);
	assert_int_equals(c1.nb_pawns, 5);
	assert_int_equals(c2.nb_pawns, 5);
	assert_int_equals(p1.nb_pawns, 10);
	assert_int_equals(p1.nb_cells, 2);
	assert_int_equals(c2.owner->id, p1.id);

	// move fight win
	result = player_move_to_cell(&p2, 6, &c3, &c2);
	assert_int_equals(result, FIGHT_WON);
	assert_int_equals(c3.nb_pawns, 4);
	assert_int_equals(c2.nb_pawns, 6);
	assert_int_equals(p2.nb_pawns, 10);
	assert_int_equals(p2.nb_cells, 2);
	assert_int_equals(p1.nb_pawns, 5);
	assert_int_equals(p1.nb_cells, 1);
	assert_int_equals(c2.owner->id, p2.id);

	// move fight lose
	result = player_move_to_cell(&p1, 4, &c1, &c2);
	assert_int_equals(result, FIGHT_LOST);
	assert_int_equals(c1.nb_pawns, 1);
	assert_int_equals(c2.nb_pawns, 6);
	assert_int_equals(p1.nb_pawns, 1);
	assert_int_equals(p1.nb_cells, 1);
	assert_int_equals(p2.nb_pawns, 10);
	assert_int_equals(p2.nb_cells, 2);
	assert_int_equals(c2.owner->id, p2.id);

	// move fight draw
	result = player_move_to_cell(&p2, 1, &c2, &c1);
	assert_int_equals(result, FIGHT_DRAW);
	assert_int_equals(c2.nb_pawns, 6);
	assert_int_equals(c1.nb_pawns, 1);
	assert_int_equals(p1.nb_pawns, 1);
	assert_int_equals(p1.nb_cells, 1);
	assert_int_equals(p2.nb_pawns, 10);
	assert_int_equals(p2.nb_cells, 2);
	assert_int_equals(c2.owner->id, p2.id);
	assert_int_equals(c1.owner->id, p1.id);

	free_cell(&c1);
	free_cell(&c2);
	free_cell(&c3);
}
예제 #22
0
void test_get_method_return_type(void)
{
	assert_int_equals(J_VOID, get_method_return_type("(BCDFIJSZ)V"));
	assert_int_equals(J_BYTE, get_method_return_type("(DD)B"));
	assert_int_equals(J_LONG, get_method_return_type("(V)J"));
}
예제 #23
0
void test_empty_range_does_not_contain_anything(void)
{
	struct live_range range = { .start = 0, .end = 0 };

	assert_false(in_range(&range, 0));
	assert_false(in_range(&range, 1));
}

void test_empy_range_is_empty(void)
{
	struct live_range range = { .start = 0, .end = 0 };

	assert_true(range_is_empty(&range));
}

void test_range_length_treats_end_as_exclusive(void)
{
	struct live_range range = { .start = 0, .end = 2 };

	assert_int_equals(2, range_len(&range));
}

void test_in_range_treats_end_as_exclusive(void)
{
	struct live_range range = { .start = 0, .end = 2 };

	assert_true(in_range(&range, 0));
	assert_true(in_range(&range, 1));
	assert_false(in_range(&range, 2));
}

void test_range_that_is_within_another_range_intersects(void)
{
	struct live_range range1 = { .start = 0, .end = 3 };
	struct live_range range2 = { .start = 1, .end = 2 };

	assert_true(ranges_intersect(&range1, &range2));
	assert_true(ranges_intersect(&range2, &range1));
}

void test_ranges_that_intersect(void)
{
	struct live_range range1 = { .start = 0, .end = 2 };
	struct live_range range2 = { .start = 1, .end = 3 };

	assert_true(ranges_intersect(&range1, &range2));
	assert_true(ranges_intersect(&range2, &range1));
}

void test_ranges_that_do_not_intersect(void)
{
	struct live_range range1 = { .start = 0, .end = 2 };
	struct live_range range2 = { .start = 2, .end = 4 };

	assert_false(ranges_intersect(&range1, &range2));
	assert_false(ranges_intersect(&range2, &range1));
}

void test_interval_add_range(void)
{
#if 0
	struct live_interval it;
	struct live_range *r;

	INIT_LIST_HEAD(&it.range_list);

	interval_add_range(&it, 1, 3);
	r = interval_first_range(&it);
	assert_int_equals(1, r->start);
	assert_int_equals(3, r->end);
	assert_ptr_equals(NULL, next_range(&it.range_list, r));

	interval_add_range(&it, 5, 7);
	r = interval_first_range(&it);
	assert_int_equals(1, r->start);
	assert_int_equals(3, r->end);
	r = next_range(&it.range_list, r);
	assert_int_equals(5, r->start);
	assert_int_equals(7, r->end);
	assert_ptr_equals(NULL, next_range(&it.range_list, r));

	interval_add_range(&it, 3, 5);
	r = interval_first_range(&it);
	assert_int_equals(1, r->start);
	assert_int_equals(7, r->end);
	assert_ptr_equals(NULL, next_range(&it.range_list, r));

	interval_add_range(&it, 7, 8);
	r = interval_first_range(&it);
	assert_int_equals(1, r->start);
	assert_int_equals(8, r->end);
	assert_ptr_equals(NULL, next_range(&it.range_list, r));

	interval_add_range(&it, 10, 13);
	r = interval_first_range(&it);
	assert_int_equals(1, r->start);
	assert_int_equals(8, r->end);
	r = next_range(&it.range_list, r);
	assert_int_equals(10, r->start);
	assert_int_equals(13, r->end);
	assert_ptr_equals(NULL, next_range(&it.range_list, r));

	interval_add_range(&it, 0, 14);
	r = interval_first_range(&it);
	assert_int_equals(0, r->start);
	assert_int_equals(14, r->end);
	assert_ptr_equals(NULL, next_range(&it.range_list, r));
#endif
}
예제 #24
0
static void assert_ld_insn(enum insn_type type, enum machine_reg reg, struct stack_slot *slot, struct insn *insn)
{
	assert_int_equals(type, insn->type);
	assert_int_equals(reg, mach_reg(&insn->x.reg));
	assert_ptr_equals(slot, insn->y.slot); 
}
예제 #25
0
void test_boe_login_response(void)
{
	struct boe_login_response *login;
	struct boe_message *msg = (void *) recv_buffer;
	struct buffer *buf;
	int fd;

	buf = buffer_new(1024);

	fd = open(DATA_PATH "login-response-message.bin", O_RDONLY);
	fail_if(fd < 0);

	fail_if(buffer_xread(buf, fd) < 0);

	fail_if(boe_message_decode(buf, msg, BOE_MAX_MESSAGE_LEN) < 0);

	login = boe_message_payload(msg);

	assert_int_equals(BOE_MAGIC, msg->header.StartOfMessage);
	assert_int_equals(183, msg->header.MessageLength);
	assert_int_equals(LoginResponse, msg->header.MessageType);
	assert_int_equals(0, msg->header.MatchingUnit);
	assert_int_equals(0, msg->header.SequenceNumber);

	assert_int_equals('A', login->LoginResponseStatus);
	assert_mem_equals("Accepted", login->LoginResponseText, strlen("Accepted"));
	assert_int_equals(0, login->NoUnspecifiedUnitReplay);
	assert_int_equals(Symbol|ClearingFirm|ClearingAccount, login->OrderAcknowledgementBitfields);
	assert_int_equals(Symbol|ClearingFirm|ClearingAccount, login->OrderRejectedBitfields);
	assert_int_equals(Symbol|ClearingFirm|ClearingAccount, login->OrderModifiedBitfields);
	assert_int_equals(0, login->OrderRestatedBitfields);
	assert_int_equals(Symbol|ClearingFirm|ClearingAccount, login->UserModifyRejectedBitfields);
	assert_int_equals(0, login->OrderCancelledBitfields);
	assert_int_equals(0, login->CancelRejectedBitfields);
	assert_int_equals(Symbol|ClearingFirm|ClearingAccount, login->OrderExecutionBitfields);
	assert_int_equals(Symbol, login->TradeCancelOrCorrectBitfields);
	assert_int_equals(0, login->ReservedBitfields1);
	assert_int_equals(0, login->ReservedBitfields2);
	assert_int_equals(4, login->NumberOfUnits);

	assert_int_equals(1, login->Units[0].UnitNumber);
	assert_int_equals(113482, login->Units[0].UnitSequence);

	assert_int_equals(2, login->Units[1].UnitNumber);
	assert_int_equals(0, login->Units[1].UnitSequence);

	assert_int_equals(3, login->Units[2].UnitNumber);
	assert_int_equals(0, login->Units[2].UnitSequence);

	assert_int_equals(4, login->Units[3].UnitNumber);
	assert_int_equals(41337, login->Units[3].UnitSequence);

	buffer_delete(buf);

	fail_if(close(fd) < 0);
}
예제 #26
0
파일: liveness-test.c 프로젝트: vegard/jato
static void assert_live_range(struct live_interval *interval, unsigned long expected_start, unsigned long expected_end)
{
	assert_int_equals(expected_start, interval->range.start);
	assert_int_equals(expected_end, interval->range.end);
}
예제 #27
0
void test_boe_login_request(void)
{
	struct boe_login_request *login;
	struct boe_message *msg = (void *) recv_buffer;
	struct buffer *buf;
	int fd;

	buf = buffer_new(1024);

	fd = open(DATA_PATH "login-request-message.bin", O_RDONLY);
	fail_if(fd < 0);

	fail_if(buffer_xread(buf, fd) < 0);

	fail_if(boe_message_decode(buf, msg, BOE_MAX_MESSAGE_LEN) < 0);

	login = boe_message_payload(msg);

	assert_int_equals(BOE_MAGIC, msg->header.StartOfMessage);
	assert_int_equals(131, msg->header.MessageLength);
	assert_int_equals(LoginRequest, msg->header.MessageType);
	assert_int_equals(0, msg->header.MatchingUnit);
	assert_int_equals(0, msg->header.SequenceNumber);

	assert_mem_equals("0001", login->SessionSubID, ARRAY_SIZE(login->SessionSubID));
	assert_mem_equals("TEST", login->Username, ARRAY_SIZE(login->Username));
	assert_mem_equals("TESTING\0\0\0", login->Password, ARRAY_SIZE(login->Password));
	assert_int_equals(0, login->NoUnspecifiedUnitReplay);
	assert_int_equals(Symbol|ClearingFirm|ClearingAccount, login->OrderAcknowledgementBitfields);
	assert_int_equals(Symbol|ClearingFirm|ClearingAccount, login->OrderRejectedBitfields);
	assert_int_equals(Symbol|ClearingFirm|ClearingAccount, login->OrderModifiedBitfields);
	assert_int_equals(0, login->OrderRestatedBitfields);
	assert_int_equals(Symbol|ClearingFirm|ClearingAccount, login->UserModifyRejectedBitfields);
	assert_int_equals(0, login->OrderCancelledBitfields);
	assert_int_equals(0, login->CancelRejectedBitfields);
	assert_int_equals(Symbol|ClearingFirm|ClearingAccount, login->OrderExecutionBitfields);
	assert_int_equals(Symbol, login->TradeCancelOrCorrectBitfields);
	assert_int_equals(0, login->ReservedBitfields1);
	assert_int_equals(0, login->ReservedBitfields2);
	assert_int_equals(3, login->NumberOfUnits);

	assert_int_equals(1, login->Units[0].UnitNumber);
	assert_int_equals(113482, login->Units[0].UnitSequence);

	assert_int_equals(2, login->Units[1].UnitNumber);
	assert_int_equals(0, login->Units[1].UnitSequence);

	assert_int_equals(4, login->Units[2].UnitNumber);
	assert_int_equals(41337, login->Units[2].UnitSequence);

	buffer_delete(buf);

	fail_if(close(fd) < 0);
}
예제 #28
0
void test_boe_logout(void)
{
	struct boe_logout *logout;
	struct boe_message *msg = (void *) recv_buffer;
	struct buffer *buf;
	int fd;

	buf = buffer_new(1024);

	fd = open(DATA_PATH "logout-message.bin", O_RDONLY);
	fail_if(fd < 0);

	fail_if(buffer_xread(buf, fd) < 0);

	fail_if(boe_message_decode(buf, msg, BOE_MAX_MESSAGE_LEN) < 0);

	logout = boe_message_payload(msg);

	assert_int_equals(BOE_MAGIC, msg->header.StartOfMessage);
	assert_int_equals(89, msg->header.MessageLength);
	assert_int_equals(Logout, msg->header.MessageType);
	assert_int_equals(0, msg->header.MatchingUnit);
	assert_int_equals(0, msg->header.SequenceNumber);

	assert_int_equals('U', logout->LogoutReason);
	assert_mem_equals("User", logout->LogoutReasonText, 4);
	assert_int_equals(103231, logout->LastReceivedSequenceNumber);

	assert_int_equals(3, logout->NumberOfUnits);

	assert_int_equals(1, logout->Units[0].UnitNumber);
	assert_int_equals(113482, logout->Units[0].UnitSequence);

	assert_int_equals(2, logout->Units[1].UnitNumber);
	assert_int_equals(0, logout->Units[1].UnitSequence);

	assert_int_equals(4, logout->Units[2].UnitNumber);
	assert_int_equals(41337, logout->Units[2].UnitSequence);

	buffer_delete(buf);

	fail_if(close(fd) < 0);
}
예제 #29
0
static void assert_def_mask(int r0_set, int r1_set, int r2_set, struct insn *insn)
{
	assert_int_equals(r0_set, insn_defs(insn, &r0));
	assert_int_equals(r1_set, insn_defs(insn, &r1));
	assert_int_equals(r2_set, insn_defs(insn, &r2));
}
예제 #30
0
static void assert_def_fixed_mask(int a_set, int c_set, int d_set, struct insn *insn)
{
	assert_int_equals(a_set, insn_defs(insn, &eax));
	assert_int_equals(c_set, insn_defs(insn, &ecx));
	assert_int_equals(d_set, insn_defs(insn, &edx));
}