Example #1
0
char *test_fxb_array_pop() {
  spec_describe("Push until expansion required");

  FxB_Array *array = FxB_Array_create(32);

  fxb_array_push(array, "1");
  fxb_array_push(array, "2");
  fxb_array_push(array, "3");

  char *value = fxb_array_pop(array);

  assert_strings_equal(value, "3", "last value");
  assert_ints_equal(fxb_array_length(array), 2, "length");

  value = fxb_array_pop(array);
  assert_strings_equal(value, "2", "middle value");
  assert_ints_equal(fxb_array_length(array), 1, "length");

  value = fxb_array_pop(array);
  assert_strings_equal(value, "1", "first value");
  assert_ints_equal(fxb_array_length(array), 0, "length");

  fxb_array_free(array);

  return NULL;
}
Example #2
0
char *test_create_array() {
  spec_describe("Create");

  FxB_Array *array = FxB_Array_create(10);

  assert_ints_equal(fxb_array_length(array), 0, "length");
  assert_ints_equal(fxb_array_capacity(array), 10, "capacity");

  fxb_array_free(array);

  return NULL;
}
char *test_create_hash() {
  spec_describe("Create");

  HashMap *hash_map = HashMap_create(100);

  assert_ints_equal(hash_map_capacity(hash_map), 100, "capacity");
  assert_ints_equal(hash_map_length(hash_map), 0,  "length");
  assert_ints_equal(array_capacity(hash_map_values(hash_map)), 100, "values capacity");
  assert_ints_equal(array_length(hash_map_values(hash_map)), 0, "values length");

  hash_map_free(hash_map);
  return NULL;
}
Example #4
0
char *test_fxb_array_set_at_index_bug() {
  spec_describe("set at index when capactiy starts at 4");

  FxB_Array *array = FxB_Array_create(4);

  fxb_array_set(array, 1, "expressions");

  assert_ints_equal(fxb_array_length(array), 2, "length after setting index at 2");
  fxb_array_set(array, 0, "arguments");
  assert_ints_equal(fxb_array_length(array), 2, "length after setting index at 0");

  fxb_array_free(array);

  return NULL;
}
Example #5
0
char *test_implicit_method_call_with_parens() {
  spec_describe("implicit method: print(1)");
  FxP_ParserContext *context = parse_string("print(1)\n");
  setup_json();

  element = json_object_get(
      json_object_get(
        json_object_get(
          json_object_get(
            json_object_get(expression, "method_call"),
          "message"),
        "lookup"),
      "bit"),
    "STRING");
  assert_strings_equal(json_string_value(element), "print", "message correct");

  element = json_object_get(
      json_object_get(
        json_object_get(
          json_array_get(
            json_object_get(
              json_object_get(expression, "method_call"),
            "arguments"),
          0),
        "literal"),
      "bit"),
    "INTEGER");
  assert_ints_equal(json_integer_value(element), 1, "arguments correct");

  cleanup();
  return NULL;
}
Example #6
0
char *test_fxb_array_map() {
  spec_setup("Map");

  FxB_Array *array = FxB_Array_create(2);
  fxb_array_set(array, 0, "1");
  fxb_array_set(array, 1, "two");

  FxB_Array *counts = fxb_array_map(array, __count_string);
  assert_ints_equal(fxb_array_length(array), 2, "length");
  assert_ints_equal(*((int *)fxb_array_get(array, 0)), 1, "value at 0");
  assert_ints_equal(*((int *)fxb_array_get(array, 1)), 3, "value at 0");

  fxb_array_free(array);
  fxb_array_free(counts);

  return NULL;
}
Example #7
0
char *test_operator_method_call() {
  spec_describe("opreator expression: 1 + 1");
  FxP_ParserContext *context = parse_string("1 + 1\n");

  setup_json();

  element = json_object_get(
      json_object_get(
        json_object_get(
          json_object_get(
            json_object_get(expression, "method_call"),
          "receiver"),
        "literal"),
      "bit"),
    "INTEGER");
  assert_ints_equal(json_integer_value(element), 1, "receiver correct");

  element = json_object_get(
      json_object_get(
        json_object_get(
          json_object_get(
            json_object_get(expression, "method_call"),
          "message"),
        "lookup"),
      "bit"),
    "STRING");
  assert_strings_equal(json_string_value(element), "+", "message correct");

  element = json_object_get(
      json_object_get(
        json_object_get(
          json_array_get(
            json_object_get(
              json_object_get(expression, "method_call"),
            "arguments"),
          0),
        "literal"),
      "bit"),
    "INTEGER");
  assert_ints_equal(json_integer_value(element), 1, "arguments correct");

  cleanup();

  return NULL;
}
Example #8
0
char *test_fxb_array_set_at_index() {
  spec_describe("set at index, set at index above capacity");

  FxB_Array *array = FxB_Array_create(32);

  fxb_array_set(array, 1, "Gerbil");

  assert_ints_equal(fxb_array_length(array), 2, "length after setting index 1");
  assert_strings_equal((char *)(fxb_array_get(array, 1)), "Gerbil", "value at index 1");

  fxb_array_set(array, 32, "Another Gerbil");
  assert_ints_equal(fxb_array_capacity(array), 128, "capacity after setting above current capacity");
  assert_ints_equal(fxb_array_length(array), 33, "length");
  assert_strings_equal((char *)(fxb_array_get(array, 32)), "Another Gerbil", "value");

  fxb_array_free(array);

  return NULL;
}
Example #9
0
char *test_fxb_array_push_multiple_times() {
  spec_describe("Push many times");

  FxB_Array *array = FxB_Array_create(32);

  fxb_array_push(array, "Gerbil");
  fxb_array_push(array, "Fish");
  fxb_array_push(array, "Human");

  assert_ints_equal(fxb_array_length(array), 3, "length");
  assert_ints_equal(fxb_array_capacity(array), 32, "capacity");

  assert_strings_equal((char *)(fxb_array_at_index(array, 0)), "Gerbil", "value at index 0");
  assert_strings_equal((char *)(fxb_array_at_index(array, 1)), "Fish", "value at index 1");
  assert_strings_equal((char *)(fxb_array_at_index(array, 2)), "Human", "value at index 2");

  fxb_array_free(array);

  return NULL;
}
Example #10
0
char *test_fxb_array_push() {
  spec_describe("Push");

  FxB_Array *array = FxB_Array_create(32);
  fxb_array_push(array, "Gerbil");

  assert_ints_equal(fxb_array_length(array), 1, "length");
  assert_strings_equal((char *)(fxb_array_at_index(array, 0)), "Gerbil", "value");

  fxb_array_free(array);

  return NULL;
}
Example #11
0
int main() {

	init();

	begin_test_suite();
	
	mpz_t t1, t2, t3, t4, t5;
	mpz_init(t1); mpz_init(t2);
	mpz_init(t3); mpz_init(t4);
	mpz_init(t5); 

	begin_context("calc_2rest");
		begin_test("9");
			mpz_set_ui(t1, 9);
			calc_2rest(t1, t2);
			assert_ints_equal(mpz_get_ui(t2), 9);

		begin_test("8");
			mpz_set_ui(t1, 8);
			calc_2rest(t1, t2);
			assert_ints_equal(mpz_get_ui(t2), 1);

		begin_test("23492462");
			mpz_set_ui(t1, 23492462);
			calc_2rest(t1, t2);
			assert_ints_equal(mpz_get_ui(t2), 11746231);
		


		end_context();

		begin_context("RSA factoring");
			begin_test("299 5 53: p");
				mpz_set_ui(t1, 299);
				mpz_set_ui(t2, 5);
				mpz_set_ui(t3, 53);
				rsafact(t1, t2, t3, t4, t5);
				assert_ints_equal(mpz_get_ui(t4), 13);
			begin_test("299 5 53: q");
				assert_ints_equal(mpz_get_ui(t5), 23);

			begin_test("22 3 7: p");
				mpz_set_ui(t1, 22);
				mpz_set_ui(t2, 3);
				mpz_set_ui(t3, 7);
				rsafact(t1, t2, t3, t4, t5);
				assert_ints_equal(mpz_get_ui(t4), 2);
			begin_test("22 3 7: q");
				assert_ints_equal(mpz_get_ui(t5), 11);
	end_test_suite();

}
Example #12
0
char *test_fxb_array_push_until_expansion() {
  spec_describe("Push until expansion required");

  FxB_Array *array = FxB_Array_create(32);

  int i;
  char *num;
  for (i = 0; i < 33; i++) {
    num = calloc(4, sizeof(char));
    sprintf(num, "%d", i);
    fxb_array_push(array, num);
  }

  assert_ints_equal(fxb_array_length(array), 33, "length");
  assert_ints_equal(fxb_array_capacity(array), 128, "capacity");

  assert_strings_equal((char *)(fxb_array_at_index(array, 1)), "1", "value at index 1");
  assert_strings_equal((char *)(fxb_array_at_index(array, 30)), "30", "value at index 30");
  assert_strings_equal((char *)(fxb_array_at_index(array, 32)), "32", "value at index 32");

  fxb_array_r_free(array);

  return NULL;
}
char *test_reset_value() {
  spec_describe("Setting and getting value");

  HashMap *hash_map = HashMap_create(10);
  String *key = String_create("key");
  String *value_1 = String_create("value");
  String *value_2 = String_create("another value");

  hash_map_set(hash_map, key, value_1);
  hash_map_set(hash_map, key, value_2);

  assert_equal(hash_map_get(hash_map, key), value_2, "value same");
  int index = hash_map_index_for_key(hash_map, key);
  assert_ints_equal(list_length((List *)hash_map_list_at_index(hash_map, index)), 1, "no duplicates for key in list");

  string_free(key);
  string_free(value_1);
  string_free(value_2);
  hash_map_free(hash_map);

  return NULL;
}
Example #14
0
char *test_function_with_two_expressions() {
  // TODO: parser can't handle no terminating \n at end of expressions set
  /*spec_describe("function two expressions: -> {\n  1 + 1\n  print 'word'}");*/
  spec_describe("function two expressions: -> {\n  1 + 1\n  print 'word'\n}\n");
  FxP_ParserContext *context = parse_string("-> {\n  1 + 1\n  print 'word'\n}\n");

  setup_json();

  element = json_object_get(
               json_object_get(expression, "function_definition"),
            "expressions");
  assert_ints_equal(json_array_size(element), 2, "expressions size correct");

  expression = json_object_get(
    json_object_get(expression, "function_definition"),
  "expressions");

  element = json_object_get(
      json_object_get(
        json_object_get(
          json_object_get(
            json_object_get(
              json_array_get(
                expression,
              0),
            "method_call"),
          "receiver"),
        "literal"),
      "bit"),
    "INTEGER");
  assert_ints_equal(json_integer_value(element), 1, "first expression receiver correct");

  element = json_object_get(
      json_object_get(
        json_object_get(
          json_object_get(
            json_object_get(
              json_array_get(
                expression,
              0),
            "method_call"),
          "message"),
        "lookup"),
      "bit"),
    "STRING");
  assert_strings_equal(json_string_value(element), "+", "first expression message correct");

  element = json_object_get(
      json_object_get(
        json_object_get(
          json_array_get(
            json_object_get(
              json_object_get(
                json_array_get(
                  expression,
                0),
              "method_call"),
            "arguments"),
          0),
        "literal"),
      "bit"),
    "INTEGER");
  assert_ints_equal(json_integer_value(element), 1, "first expression arguments correct");

  cleanup();
  return NULL;
}
Example #15
0
char *test_function_with_expression() {
  spec_describe("function one expression: -> {\n1 + 1\n}");
  FxP_ParserContext *context = parse_string("-> {\n1 + 1\n}\n");
  setup_json();

  element = json_object_get(
               json_object_get(expression, "function_definition"),
            "expressions");
  assert_ints_equal(json_array_size(element), 1, "expressions size correct");

  element = json_object_get(
      json_object_get(
        json_object_get(
          json_object_get(
            json_object_get(
              json_array_get(
                json_object_get(
                  json_object_get(expression, "function_definition"),
                "expressions"),
              0),
            "method_call"),
          "receiver"),
        "literal"),
      "bit"),
    "INTEGER");
  assert_ints_equal(json_integer_value(element), 1, "first expression receiver correct");

  element = json_object_get(
      json_object_get(
        json_object_get(
          json_object_get(
            json_object_get(
              json_array_get(
                json_object_get(
                  json_object_get(expression, "function_definition"),
                "expressions"),
              0),
            "method_call"),
          "message"),
        "lookup"),
      "bit"),
    "STRING");
  assert_strings_equal(json_string_value(element), "+", "first expression message correct");

  element = json_object_get(
      json_object_get(
        json_object_get(
          json_array_get(
            json_object_get(
              json_object_get(
                json_array_get(
                  json_object_get(
                    json_object_get(expression, "function_definition"),
                  "expressions"),
                0),
              "method_call"),
            "arguments"),
          0),
        "literal"),
      "bit"),
    "INTEGER");
  assert_ints_equal(json_integer_value(element), 1, "first expression arguments correct");

  cleanup();
  return NULL;
}
Example #16
0
char *test_two_expressions() {
  spec_describe("test order of two expressions: 1 + 1\nprint 'word'");
  FxP_ParserContext *context = parse_string("1 + 1\nprint 'word'");

  setup_json();

  element = json_object_get(
      json_object_get(
        json_object_get(
          json_object_get(
            json_object_get(expression, "method_call"),
          "receiver"),
        "literal"),
      "bit"),
    "INTEGER");
  assert_ints_equal(json_integer_value(element), 1, "first expression receiver correct");

  element = json_object_get(
      json_object_get(
        json_object_get(
          json_object_get(
            json_object_get(expression, "method_call"),
          "message"),
        "lookup"),
      "bit"),
    "STRING");
  assert_strings_equal(json_string_value(element), "+", "second expression message correct");

  element = json_object_get(
      json_object_get(
        json_object_get(
          json_array_get(
            json_object_get(
              json_object_get(expression, "method_call"),
            "arguments"),
          0),
        "literal"),
      "bit"),
    "INTEGER");
  assert_ints_equal(json_integer_value(element), 1, "second expression arguments correct");

  expression = json_array_get(expressions, 1);                          \

  element = json_object_get(
      json_object_get(
        json_object_get(
          json_object_get(
            json_object_get(expression, "method_call"),
          "message"),
        "lookup"),
      "bit"),
    "STRING");
  assert_strings_equal(json_string_value(element), "print", "first expression message correct");

  element = json_object_get(
      json_object_get(
        json_object_get(
          json_array_get(
            json_object_get(
              json_object_get(expression, "method_call"),
            "arguments"),
          0),
        "literal"),
      "bit"),
    "STRING");
  assert_strings_equal(json_string_value(element), "word", "first expression arguments correct");

  cleanup();

  return NULL;
}