Eolian: add methods and properties scope support tests
authorJérémy Zurcher <jeremy@asynk.ch>
Tue, 22 Apr 2014 18:31:11 +0000 (20:31 +0200)
committerJérémy Zurcher <jeremy@asynk.ch>
Tue, 22 Apr 2014 18:31:11 +0000 (20:31 +0200)
src/tests/eolian/data/scope.eo [new file with mode: 0644]
src/tests/eolian/eolian_suite.c

diff --git a/src/tests/eolian/data/scope.eo b/src/tests/eolian/data/scope.eo
new file mode 100644 (file)
index 0000000..a0c0448
--- /dev/null
@@ -0,0 +1,24 @@
+class Simple {
+   properties {
+      protected a {
+         get {
+         }
+      }
+      b {
+         get {
+         }
+      }
+      public   c  {
+         get {
+         }
+      }
+   }
+   methods {
+      foo {
+      }
+      protected  bar  {
+      }
+      public foobar {
+      }
+   }
+};
index 7534e57..2f292e5 100644 (file)
@@ -16,6 +16,35 @@ struct _Eolian_Test_Case
    void      (*build)(TCase *tc);
 };
 
+START_TEST(eolian_scope)
+{
+   Eolian_Function fid = NULL;
+   const char *class_name = "Simple";
+
+   eolian_init();
+   /* Parsing */
+   fail_if(!eolian_eo_file_parse(PACKAGE_DATA_DIR"/data/scope.eo"));
+
+   /* Property scope */
+   fail_if(!(fid = eolian_class_function_find_by_name(class_name, "a", EOLIAN_PROPERTY)));
+   fail_if(eolian_function_scope_get(fid) != EOLIAN_SCOPE_PROTECTED);
+   fail_if(!(fid = eolian_class_function_find_by_name(class_name, "b", EOLIAN_PROPERTY)));
+   fail_if(eolian_function_scope_get(fid) != EOLIAN_SCOPE_PUBLIC);
+   fail_if(!(fid = eolian_class_function_find_by_name(class_name, "c", EOLIAN_PROPERTY)));
+   fail_if(eolian_function_scope_get(fid) != EOLIAN_SCOPE_PUBLIC);
+
+   /* Method scope */
+   fail_if(!(fid = eolian_class_function_find_by_name(class_name, "foo", EOLIAN_METHOD)));
+   fail_if(eolian_function_scope_get(fid) != EOLIAN_SCOPE_PUBLIC);
+   fail_if(!(fid = eolian_class_function_find_by_name(class_name, "bar", EOLIAN_METHOD)));
+   fail_if(eolian_function_scope_get(fid) != EOLIAN_SCOPE_PROTECTED);
+   fail_if(!(fid = eolian_class_function_find_by_name(class_name, "foobar", EOLIAN_METHOD)));
+   fail_if(eolian_function_scope_get(fid) != EOLIAN_SCOPE_PUBLIC);
+
+   eolian_shutdown();
+}
+END_TEST
+
 START_TEST(eolian_simple_parsing)
 {
    Eolian_Function fid = NULL;
@@ -111,6 +140,7 @@ END_TEST
 static void eolian_parsing_test(TCase *tc)
 {
    tcase_add_test(tc, eolian_simple_parsing);
+   tcase_add_test(tc, eolian_scope);
 }
 
 static const Eolian_Test_Case etc[] = {