diff options
Diffstat (limited to 'lib/cosNotification/test/grammar_SUITE.erl')
-rw-r--r-- | lib/cosNotification/test/grammar_SUITE.erl | 1091 |
1 files changed, 0 insertions, 1091 deletions
diff --git a/lib/cosNotification/test/grammar_SUITE.erl b/lib/cosNotification/test/grammar_SUITE.erl deleted file mode 100644 index 536292fdee..0000000000 --- a/lib/cosNotification/test/grammar_SUITE.erl +++ /dev/null @@ -1,1091 +0,0 @@ -%%-------------------------------------------------------------------- -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2000-2016. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% -%% -%%-------------------------------------------------------------------- -%% File : grammar_SUITE.erl -%% Purpose : Testing the CosNotification BNF grammar. -%%-------------------------------------------------------------------- - --module(grammar_SUITE). - -%%--------------- INCLUDES ----------------------------------- --include_lib("orber/include/corba.hrl"). --include_lib("orber/include/ifr_types.hrl"). -%% cosEvent files. --include_lib("cosEvent/include/CosEventChannelAdmin.hrl"). -%% Application files --include_lib("cosNotification/include/CosNotification.hrl"). --include_lib("cosNotification/include/CosNotifyChannelAdmin.hrl"). --include_lib("cosNotification/include/CosNotifyComm.hrl"). --include_lib("cosNotification/include/CosNotifyFilter.hrl"). - --include_lib("cosNotification/src/CosNotification_Definitions.hrl"). - --include("idl_output/notify_test.hrl"). - --include_lib("common_test/include/ct.hrl"). - -%%--------------- DEFINES ------------------------------------ --define(default_timeout, test_server:minutes(20)). --define(match(ExpectedRes, Expr), - fun() -> - AcTuAlReS = (catch (Expr)), - case AcTuAlReS of - ExpectedRes -> - io:format("------ CORRECT RESULT ------~n~p~n", - [AcTuAlReS]), - AcTuAlReS; - _ -> - io:format("###### ERROR ERROR ######~n~p~n", - [AcTuAlReS]), - exit(AcTuAlReS) - end - end()). - -%%----------------------------------------------------------------- -%% External exports -%%----------------------------------------------------------------- --export([all/0, suite/0,groups/0,init_per_group/2,end_per_group/2, - cases/0, init_per_suite/1, end_per_suite/1, - union_api/1, enum_api/1, simple_types_api/1, - components_api/1, positional_api/1, variable_api/1, - init_per_testcase/2, end_per_testcase/2]). - --import(cosNotification_Filter, [create_filter/1, eval/2]). - -%%----------------------------------------------------------------- -%% Func: all/1 -%% Args: -%% Returns: -%%----------------------------------------------------------------- -suite() -> [{ct_hooks,[ts_install_cth]}]. - -all() -> - cases(). - -groups() -> - []. - -init_per_group(_GroupName, Config) -> - Config. - -end_per_group(_GroupName, Config) -> - Config. - - -cases() -> - [variable_api, union_api, enum_api, simple_types_api, - components_api, positional_api]. - -%%----------------------------------------------------------------- -%% Init and cleanup functions. -%%----------------------------------------------------------------- -init_per_testcase(_Case, Config) -> - Path = code:which(?MODULE), - code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), - Dog=test_server:timetrap(?default_timeout), - [{watchdog, Dog}|Config]. - - -end_per_testcase(_Case, Config) -> - Path = code:which(?MODULE), - code:del_path(filename:join(filename:dirname(Path), "idl_output")), - Dog = proplists:get_value(watchdog, Config), - test_server:timetrap_cancel(Dog), - ok. - -init_per_suite(Config) -> - Path = code:which(?MODULE), - code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), - if - is_list(Config) -> - Config; - true -> - exit("Config not a list") - end. - -end_per_suite(Config) -> - Path = code:which(?MODULE), - code:del_path(filename:join(filename:dirname(Path), "idl_output")), - Config. - - -%%----------------------------------------------------------------- -%% simple types grammar tests -%%----------------------------------------------------------------- -simple_types_api(_Config) -> - %% Will always be true, no matter what kind of event we receive. - {ok,T1} = ?match({ok, _}, create_filter("2==2 and 3<4")), - ?match(true, eval(T1, ?not_CreateSE("DomainName","TypeName","EventName", - [],[], any:create(orber_tc:null(), null)))), - - %% Will always be true, no matter what kind of event we receive. - {ok,T2} = ?match({ok, _}, create_filter("")), - ?match(true, eval(T2, ?not_CreateSE("DomainName","TypeName","EventName", - [],[], any:create(orber_tc:null(), null)))), - - %% Check if $variable works - {ok,T3} = ?match({ok, _}, create_filter("$city == \'Berlin\'")), - ?match(true, eval(T3, ?not_CreateSE("DomainName","TypeName","EventName", - [#'CosNotification_Property'{name="city", - value=any:create(orber_tc:string(0), "Berlin")}], - [], any:create(orber_tc:null(), null)))), - ?match(false, eval(T3, ?not_CreateSE("DomainName","TypeName", "EventName", - [#'CosNotification_Property'{name="city", - value=any:create(orber_tc:string(0), "Dallas")}], - - [], any:create(orber_tc:null(), null)))), - - - {ok,T4} = ?match({ok, _}, create_filter("$zip == 44")), - ?match(true, eval(T4, ?not_CreateSE("DomainName","TypeName", "EventName", - [#'CosNotification_Property'{name="zip", - value=any:create(orber_tc:short(), 44)}], - - [], any:create(orber_tc:null(), null)))), - ?match(true, eval(T4, ?not_CreateSE("DomainName","TypeName", "EventName", - [],[], - any:create('CosNotification_Property':tc(), - #'CosNotification_Property' - {name="zip", - value=any:create(orber_tc:short(), - 44)})))), - ?match(false, eval(T4, ?not_CreateSE("DomainName","TypeName", "EventName", - [#'CosNotification_Property'{name="zip", - value=any:create(orber_tc:short(), 33)}], - - [], any:create(orber_tc:null(), null)))), - - %% Will always be true, no matter what kind of event we receive. - {ok,T5} = ?match({ok, _}, create_filter("\'oo'\~\'foobar\'")), - ?match(true, eval(T5, ?not_CreateSE("DomainName","TypeName","EventName", - [],[], any:create(orber_tc:null(), null)))), - %% Will always be false, no matter what kind of event we receive. - {ok,T6} = ?match({ok, _}, create_filter("\'o1'\~\'foobar\'")), - ?match(false, eval(T6, ?not_CreateSE("DomainName","TypeName","EventName", - [],[], any:create(orber_tc:null(), null)))), - - %% Can we apply the ~ operation as above using a variable - {ok,T7} = ?match({ok, _}, create_filter("$str~\'foobar\'")), - ?match(true, eval(T7, ?not_CreateSE("DomainName","TypeName","EventName", - [#'CosNotification_Property'{name="str", - value=any:create(orber_tc:string(0), "oo")}], - [], any:create(orber_tc:null(), null)))), - ?match(false, eval(T7, ?not_CreateSE("DomainName","TypeName","EventName", - [#'CosNotification_Property'{name="str", - value=any:create(orber_tc:string(0), "ok")}], - [], any:create(orber_tc:null(), null)))), - - - - {ok,_T8} = ?match({ok, _}, create_filter("$\\zip == 44444")), - - ok. - -%%----------------------------------------------------------------- -%% enum grammar tests -%%----------------------------------------------------------------- -enum_api(_Config) -> - %% Accept events whose 'in' enum is set to the value 'HOUSE' or 'CAR'. - {ok,T1} = ?match({ok, _}, create_filter("$.\\in == HOUSE or $.\\in == CAR")), - - ?match(true, eval(T1, any:create(orber_tc:alias("IFRId","in",tk_any), - any:create({tk_enum, "IFRId", "in", ["HOUSE", "CAR"]}, - 'HOUSE')))), - ?match(false, eval(T1, any:create(orber_tc:alias("IFRId","in",tk_any), - any:create({tk_enum, "IFRId", "in", ["HOUSE", "CAR"]}, - 'GARAGE')))), - ok. - - -%%----------------------------------------------------------------- -%% Union grammar tests -%%----------------------------------------------------------------- -union_api(_Config) -> - {ok,T1} = ?match({ok, _}, create_filter("exist $.uni1._d and $.uni1._d == 1 and $.uni1.(1) == 10")), - {ok,T2} = ?match({ok, _}, create_filter("default $.uni1._d and $.uni1.() == 10")), - {ok,T3} = ?match({ok, _}, create_filter("default $.uni1._d and $.uni1.(999) == 10")), - ?match(true, eval(T1, ?not_CreateSE("DomainName","CommunicationsAlarm", - "EventName",[],[], - any:create(orber_tc:alias("IDL:notify_test/namedAny:1.0", - "uni1", - tk_any), - any:create(notify_test_uni1:tc(), - #notify_test_uni1{label= 1, - value=10}))))), - ?match(true, eval(T2, ?not_CreateSE("DomainName","CommunicationsAlarm", - "EventName",[],[], - any:create(orber_tc:alias("IDL:notify_test/namedAny:1.0", - "uni1", - tk_any), - any:create(notify_test_uni1:tc(), - #notify_test_uni1{label= 100, - value=10}))))), - ?match(true, eval(T3, ?not_CreateSE("DomainName","CommunicationsAlarm", - "EventName",[],[], - any:create(orber_tc:alias("IDL:notify_test/namedAny:1.0", - "uni1", - tk_any), - any:create(notify_test_uni1:tc(), - #notify_test_uni1{label= 100, - value=10}))))), - ?match(true, eval(T1, any:create(orber_tc:alias("IDL:notify_test/namedAny:1.0", - "uni1", - tk_any), - any:create(notify_test_uni1:tc(), - #notify_test_uni1{label= 1, - value=10})))), - ?match(false, eval(T2, any:create(orber_tc:alias("IDL:notify_test/namedAny:1.0", - "uni1", - tk_any), - any:create(notify_test_uni1:tc(), - #notify_test_uni1{label= 1, - value=10})))), - ?match(false, eval(T3, any:create(orber_tc:alias("IDL:notify_test/namedAny:1.0", - "uni1", - tk_any), - any:create(notify_test_uni1:tc(), - #notify_test_uni1{label= 1, - value=10})))), - ?match(true, eval(T1, ?not_CreateSE("DomainName","CommunicationsAlarm", - "EventName",[],[], - any:create(notify_test_studies:tc(), #notify_test_studies - {uni1 = #notify_test_uni1{label= 1, value=10}, - gpa = 90, - tests = [#'CosNotification_Property' - {name="midterm", value=any:create(orber_tc:short(), 70)}, - #'CosNotification_Property' - {name="final", value=any:create(orber_tc:short(), 60)}], - monthly_attendance = {0,1,2,10}})))), - ?match(false, eval(T2, ?not_CreateSE("DomainName","CommunicationsAlarm", - "EventName",[],[], - any:create(notify_test_studies:tc(), #notify_test_studies - {uni1 = #notify_test_uni1{label= 1, value=10}, - gpa = 90, - tests = [#'CosNotification_Property' - {name="midterm", value=any:create(orber_tc:short(), 70)}, - #'CosNotification_Property' - {name="final", value=any:create(orber_tc:short(), 60)}], - monthly_attendance = {0,1,2,10}})))), - ?match(false, eval(T3, ?not_CreateSE("DomainName","CommunicationsAlarm", - "EventName",[],[], - any:create(notify_test_studies:tc(), #notify_test_studies - {uni1 = #notify_test_uni1{label= 1, value=10}, - gpa = 90, - tests = [#'CosNotification_Property' - {name="midterm", value=any:create(orber_tc:short(), 70)}, - #'CosNotification_Property' - {name="final", value=any:create(orber_tc:short(), 60)}], - monthly_attendance = {0,1,2,10}})))), - ?match(true, eval(T1, any:create(notify_test_studies:tc(), #notify_test_studies - {uni1 = #notify_test_uni1{label= 1, value=10}, - gpa = 90, - tests = [#'CosNotification_Property' - {name="midterm", value=any:create(orber_tc:short(), 70)}, - #'CosNotification_Property' - {name="final", value=any:create(orber_tc:short(), 60)}], - monthly_attendance = {0,1,2,10}}))), - ?match(false, eval(T2, any:create(notify_test_studies:tc(), #notify_test_studies - {uni1 = #notify_test_uni1{label= 1, value=10}, - gpa = 90, - tests = [#'CosNotification_Property' - {name="midterm", value=any:create(orber_tc:short(), 70)}, - #'CosNotification_Property' - {name="final", value=any:create(orber_tc:short(), 60)}], - monthly_attendance = {0,1,2,10}}))), - ?match(false, eval(T3, any:create(notify_test_studies:tc(), #notify_test_studies - {uni1 = #notify_test_uni1{label= 1, value=10}, - gpa = 90, - tests = [#'CosNotification_Property' - {name="midterm", value=any:create(orber_tc:short(), 70)}, - #'CosNotification_Property' - {name="final", value=any:create(orber_tc:short(), 60)}], - monthly_attendance = {0,1,2,10}}))), - - {ok,T4} = ?match({ok, _}, create_filter("exist $.alias.uni1._d and $.alias.uni1._d == 1 and $.alias.uni1.(1) == 10")), - ?match(true, eval(T4, ?not_CreateSE("DomainName","CommunicationsAlarm", - "EventName",[],[], - any:create(orber_tc:alias(notify_test_studies:id(), - "alias", - notify_test_studies:tc()), - #notify_test_studies - {uni1 = #notify_test_uni1{label= 1, value=10}, - gpa = 90, tests = [], - monthly_attendance = {0,1,2,10}})))), - ?match(true, eval(T4, any:create(orber_tc:alias(notify_test_studies:id(), - "alias", - notify_test_studies:tc()), - #notify_test_studies - {uni1 = #notify_test_uni1{label= 1, value=10}, - gpa = 90, tests = [], - monthly_attendance = {0,1,2,10}}))), - %% Accept events with a default union discriminator set to the value 2. - {ok,T5} = ?match({ok, _}, create_filter("default $._d and $.defvalue == 2")), - ?match(true, eval(T5, any:create(notify_test_uni1:tc(), - #notify_test_uni1{label= 100, value=2}))), - %% label not default. - ?match(false, eval(T5, any:create(notify_test_uni1:tc(), - #notify_test_uni1{label= 2, value=2}))), - %% Default does not exist (nor the component defvalue) - ?match(false, eval(T5, any:create(notify_test_uni2:tc(), - #notify_test_uni2{label= 100, value=2}))), - %% Both wrong - ?match(false, eval(T5, any:create(notify_test_uni2:tc(), - #notify_test_uni2{label= 2, value=2}))), - - {ok,T6} = ?match({ok, _}, create_filter("default $._d and $.(-8) == 2")), - ?match(true, eval(T6, any:create(notify_test_uni1:tc(), - #notify_test_uni1{label= 100, value=2}))), - %% label not default. - ?match(false, eval(T6, any:create(notify_test_uni1:tc(), - #notify_test_uni1{label= 2, value=2}))), - %% Default does not exist (nor the component defvalue) - ?match(false, eval(T6, any:create(notify_test_uni2:tc(), - #notify_test_uni2{label= 100, value=2}))), - %% Both wrong - ?match(false, eval(T6, any:create(notify_test_uni2:tc(), - #notify_test_uni2{label= 2, value=2}))), - %% the same as the above, but we try to access a label that is not default - {ok,T7} = ?match({ok, _}, create_filter("default $._d and $.(2) == 2")), - ?match({error, _}, eval(T7, any:create(notify_test_uni1:tc(), - #notify_test_uni1{label= 100, value=2}))), - - %% Must be a default-union with its 'defvalue' set to 2. - {ok,T8} = ?match({ok, _}, create_filter("default $._d and $.('defvalue') == 2")), - ?match(true, eval(T8, any:create(notify_test_uni1:tc(), - #notify_test_uni1{label= 100, value=2}))), - %% label not default. - ?match(false, eval(T8, any:create(notify_test_uni1:tc(), - #notify_test_uni1{label= 2, value=2}))), - %% Default does not exist (nor the component defvalue) - ?match(false, eval(T8, any:create(notify_test_uni2:tc(), - #notify_test_uni2{label= 100, value=2}))), - %% Both wrong - ?match(false, eval(T8, any:create(notify_test_uni2:tc(), - #notify_test_uni2{label= 2, value=2}))), - - %% Must be a default-union with its value set to 2. - {ok,T9} = ?match({ok, _}, create_filter("default $._d and $.(+100) == 2")), - ?match(true, eval(T9, any:create(notify_test_uni1:tc(), - #notify_test_uni1{label= 100, value=2}))), - %% label not default. - ?match(false, eval(T9, any:create(notify_test_uni1:tc(), - #notify_test_uni1{label= 2, value=2}))), - %% Default does not exist (nor the component defvalue) - ?match(false, eval(T9, any:create(notify_test_uni2:tc(), - #notify_test_uni2{label= 100, value=2}))), - %% Both wrong - ?match(false, eval(T9, any:create(notify_test_uni2:tc(), - #notify_test_uni2{label= 2, value=2}))), - - %% So far, we have only tested to access the union itself. No will use more - %% complex union members. - %% T10 and T11 is "equal" - {ok,T10} = ?match({ok, _}, create_filter("$.M < 54")), - {ok,T11} = ?match({ok, _}, create_filter("$.(5) < 54")), - ?match(false, eval(T10, any:create(notify_test_K:tc(), - #notify_test_K{label= 5, value=54}))), - ?match(false, eval(T11, any:create(notify_test_K:tc(), - #notify_test_K{label= 5, value=54}))), - ?match(true, eval(T10, any:create(notify_test_K:tc(), - #notify_test_K{label= 5, value=50}))), - ?match(true, eval(T11, any:create(notify_test_K:tc(), - #notify_test_K{label= 5, value=50}))), - ?match({error,_}, eval(T10, any:create(notify_test_K:tc(), - #notify_test_K{label= -1, value=50}))), - ?match({error,_}, eval(T11, any:create(notify_test_K:tc(), - #notify_test_K{label= -1, value=50}))), - - %% T12 and T13 is "equal" - {ok,T12} = ?match({ok, _}, create_filter("$.L.C < 128")), - {ok,T13} = ?match({ok, _}, create_filter("$.(3).2 < 128")), - ?match(true, eval(T12, any:create(notify_test_K:tc(), - #notify_test_K{label= 3, value= - #notify_test_X{'A' = 1, - 'B' = "string", - 'C' = 120}}))), - ?match(true, eval(T13, any:create(notify_test_K:tc(), - #notify_test_K{label= 3, value= - #notify_test_X{'A' = 1, - 'B' = "string", - 'C' = 120}}))), - ?match(false, eval(T12, any:create(notify_test_K:tc(), - #notify_test_K{label= 3, value= - #notify_test_X{'A' = 1, - 'B' = "string", - 'C' = 200}}))), - ?match(false, eval(T13, any:create(notify_test_K:tc(), - #notify_test_K{label= 3, value= - #notify_test_X{'A' = 1, - 'B' = "string", - 'C' = 200}}))), - - %% Test if 'putty' is a substring of K - {ok,T15} = ?match({ok, _}, create_filter("'putty' ~ $.(2)")), - {ok,T16} = ?match({ok, _}, create_filter("'putty' ~ $.K")), - ?match(true, eval(T15, any:create(notify_test_K:tc(), - #notify_test_K{label= 2, value= "isputtyok"}))), - ?match(true, eval(T16, any:create(notify_test_K:tc(), - #notify_test_K{label= 2, value= "isputtyok"}))), - ?match(false, eval(T15, any:create(notify_test_K:tc(), - #notify_test_K{label= 2, value= "notputtok"}))), - ?match(false, eval(T16, any:create(notify_test_K:tc(), - #notify_test_K{label= 2, value= "notputtok"}))), - - {ok,_T17} = ?match({ok, _}, create_filter("'putty' ~ $.(3).1")), - {ok,_T18} = ?match({ok, _}, create_filter("'putty' ~ $.L.B")), - ?match(true, eval(T12, any:create(notify_test_K:tc(), - #notify_test_K{label= 3, value= - #notify_test_X{'A' = 1, - 'B' = "isputtyok", - 'C' = 120}}))), - ?match(true, eval(T13, any:create(notify_test_K:tc(), - #notify_test_K{label= 3, value= - #notify_test_X{'A' = 1, - 'B' = "isputtyok", - 'C' = 120}}))), - ?match(false, eval(T12, any:create(notify_test_K:tc(), - #notify_test_K{label= 3, value= - #notify_test_X{'A' = 1, - 'B' = "notputtok", - 'C' = 200}}))), - ?match(false, eval(T13, any:create(notify_test_K:tc(), - #notify_test_K{label= 3, value= - #notify_test_X{'A' = 1, - 'B' = "notputtok", - 'C' = 200}}))), - - %% Please observe that the switch 0 and 2 is defined to be equivalent. - {ok,T19} = ?match({ok, _}, create_filter("$._d == 2 and $.(0) != 'hoob'")), - {ok,T20} = ?match({ok, _}, create_filter("$._d == 2 and $.(2) != 'hoob'")), - ?match(true, eval(T19, any:create(notify_test_K:tc(), - #notify_test_K{label= 2, value= "nothoob"}))), - ?match(true, eval(T20, any:create(notify_test_K:tc(), - #notify_test_K{label= 2, value= "nothoob"}))), - ?match(false, eval(T19, any:create(notify_test_K:tc(), - #notify_test_K{label= 2, value= "hoob"}))), - ?match(false, eval(T20, any:create(notify_test_K:tc(), - #notify_test_K{label= 2, value= "hoob"}))), - - ?match(false, eval(T19, any:create(notify_test_K:tc(), - #notify_test_K{label= 5, value= 55}))), - ?match(false, eval(T20, any:create(notify_test_K:tc(), - #notify_test_K{label= 5, value= 55}))), - - ?match(false, eval(T19, any:create(notify_test_K:tc(), - #notify_test_K{label= 100, value= "nothoob"}))), - ?match(false, eval(T20, any:create(notify_test_K:tc(), - #notify_test_K{label= 100, value= "nothoob"}))), - - {ok,T21} = ?match({ok, _}, create_filter("exist $.K")), - {ok,T22} = ?match({ok, _}, create_filter("exist $.(0) or exist $.(2)")), - ?match(true, eval(T21, any:create(notify_test_K:tc(), - #notify_test_K{label= 0, value= "hoob"}))), - ?match(true, eval(T22, any:create(notify_test_K:tc(), - #notify_test_K{label= 0, value= "hoob"}))), - ?match(true, eval(T21, any:create(notify_test_K:tc(), - #notify_test_K{label= 2, value= "hoob"}))), - ?match(true, eval(T22, any:create(notify_test_K:tc(), - #notify_test_K{label= 2, value= "hoob"}))), - ?match(false, eval(T21, any:create(notify_test_K:tc(), - #notify_test_K{label= 5, value= 55}))), - ?match(false, eval(T22, any:create(notify_test_K:tc(), - #notify_test_K{label= 5, value= 55}))), - - - %% Please observe that the switch 0 and 2 is defined to be equivalent. - {ok,T23} = ?match({ok, _}, create_filter("exist $.(2)")), - {ok,T24} = ?match({ok, _}, create_filter("exist $.(0)")), - ?match(true, eval(T23, any:create(notify_test_K:tc(), - #notify_test_K{label= 2, value= "hoob"}))), - ?match(false, eval(T24, any:create(notify_test_K:tc(), - #notify_test_K{label= 2, value= "hoob"}))), - ?match(false, eval(T23, any:create(notify_test_K:tc(), - #notify_test_K{label= 0, value= "hoob"}))), - ?match(true, eval(T24, any:create(notify_test_K:tc(), - #notify_test_K{label= 0, value= "hoob"}))), - ?match(false, eval(T23, any:create(notify_test_K:tc(), - #notify_test_K{label= 5, value= 55}))), - ?match(false, eval(T24, any:create(notify_test_K:tc(), - #notify_test_K{label= 5, value= 55}))), - - ok. - -%%----------------------------------------------------------------- -%% Variables grammar tests -%%----------------------------------------------------------------- -variable_api(_Config) -> - %% Accept all "CommunicationsAlarm" events - {ok,T0} = ?match({ok, _}, create_filter("$type_name == 'CommunicationsAlarm'")), - - ?match(true, eval(T0, ?not_CreateSE("DomainName","CommunicationsAlarm", - "EventName",[],[], - any:create(orber_tc:null(), null)))), - ?match(false, eval(T0, ?not_CreateSE("DomainName","CommunicationsOK", - "EventName", [],[], - any:create(orber_tc:null(), null)))), - ?match(true, eval(T0, ?not_CreateSE("DomainName","CommunicationsAlarm", - "EventName", [],[], - any:create(orber_tc:alias("IFRId", "type_name", - orber_tc:string(0)), - "CommunicationsOK")))), - - ?match(true, eval(T0, any:create(orber_tc:alias("IFRId", "type_name", - orber_tc:string(0)), - "CommunicationsAlarm"))), - ?match(false, eval(T0, any:create(orber_tc:alias("IFRId", "type_name", - orber_tc:string(0)), - "CommunicationsOK"))), - - - %% Accept all "CommunicationsAlarm" events but no "lost_packet" messages. - {ok,T1} = ?match({ok, _}, create_filter("$type_name == 'CommunicationsAlarm' and not ($event_name == 'lost_packet')")), - - ?match(true, eval(T1, ?not_CreateSE("DomainName","CommunicationsAlarm", - "EventName",[],[], - any:create(orber_tc:null(), null)))), - ?match(false, eval(T1, ?not_CreateSE("DomainName","CommunicationsAlarm", - "lost_packet", [],[], - any:create(orber_tc:null(), null)))), - ?match(true, - eval(T1, any:create(orber_tc:sequence('CosNotification_Property':tc(),0), - [#'CosNotification_Property'{name="type_name", - value=any:create(orber_tc:string(0), "CommunicationsAlarm")}, - #'CosNotification_Property'{name="event_name", - value=any:create(orber_tc:string(0), "EventName")}]))), - ?match(false, - eval(T1, any:create(orber_tc:sequence('CosNotification_Property':tc(),0), - [#'CosNotification_Property'{name="type_name", - value=any:create(orber_tc:string(0), "CommunicationsAlarm")}, - #'CosNotification_Property'{name="event_name", - value=any:create(orber_tc:string(0), "lost_packet")}]))), - - - %% Accept "CommunicationsAlarm" events with priorities ranging from 1 to 5. - {ok,T2} = ?match({ok, _}, create_filter("$type_name == 'CommunicationsAlarm' and $priority >= 1 and $priority <= 5")), - ?match(true, eval(T2, ?not_CreateSE("DomainName","CommunicationsAlarm", - "EventName", - [#'CosNotification_Property'{name="priority", - value=any:create(orber_tc:short(), 2)}], - [], any:create(orber_tc:null(), null)))), - ?match(false, eval(T2, ?not_CreateSE("DomainName","CommunicationsAlarm", - "EventName", - [#'CosNotification_Property'{name="priority", - value=any:create(orber_tc:short(), 20)}], - [], any:create(orber_tc:null(), null)))), - - %% Select "MOVIE" events featuring at least 3 of the Marx Brothers. - {ok,T3} = ?match({ok, _}, create_filter("$type_name == 'MOVIE' and (('groucho' in $starlist) + ('chico' in $starlist) + ('harpo' in $starlist) + ('zeppo' in $starlist) + ('gummo' in $starlist)) > 2")), - ?match(true, eval(T3, ?not_CreateSE("DomainName","MOVIE", - "EventName", - [#'CosNotification_Property'{name="starlist", - value=any:create(orber_tc:sequence(orber_tc:string(0),0), - ["groucho", "harpo", "sam", "gummo"])}], - [], any:create(orber_tc:null(), null)))), - ?match(false, eval(T3, ?not_CreateSE("DomainName","MOVIE", - "EventName", - [#'CosNotification_Property'{name="starlist", - value=any:create(orber_tc:sequence(orber_tc:string(0),0), - ["frodo", "bilbo", "sam", "gummo"])}], - [], any:create(orber_tc:null(), null)))), - %% Accept students that took all 3 tests and had an average score of at least 80%. - {ok,T4} = ?match({ok, _}, create_filter("$test._length == 3 and ($test[0].score + $test[1].score + $test[2].score)/3 >=80")), - ?match(true, eval(T4, ?not_CreateSE("DomainName","TypeName", - "EventName", [], - [#'CosNotification_Property'{name="test", - value=any:create(orber_tc:array(notify_test_data:tc(),0), - {#notify_test_data{score=75}, - #notify_test_data{score=80}, - #notify_test_data{score=85}})}], - any:create(orber_tc:null(), null)))), - ?match(false, eval(T4, ?not_CreateSE("DomainName","TypeName", - "EventName", [], - [#'CosNotification_Property'{name="test", - value=any:create(orber_tc:array(notify_test_data:tc(),0), - {#notify_test_data{score=75}, - #notify_test_data{score=80}, - #notify_test_data{score=80}})}], - any:create(orber_tc:null(), null)))), - ?match(false, eval(T4, ?not_CreateSE("DomainName","TypeName", - "EventName", [], - [#'CosNotification_Property'{name="test", - value=any:create(orber_tc:array(notify_test_data:tc(),0), - {#notify_test_data{score=75}, - #notify_test_data{score=85}})}], - any:create(orber_tc:null(), null)))), - %% Select processes that exceed a certain usage threshold. - {ok,T5} = ?match({ok, _}, create_filter("$memsize / 5.5 + $cputime * 1275.0 + $filesize * 1.25 > 500000.0")), - ?match(true, eval(T5, ?not_CreateSE("DomainName","TypeName", - "EventName", [], - [#'CosNotification_Property'{name="memsize", - value=any:create(orber_tc:float(), 5.5)}, - #'CosNotification_Property'{name="cputime", - value=any:create(orber_tc:float(), 0.00078431137)}, - #'CosNotification_Property'{name="filesize", - value=any:create(orber_tc:float(), 500000)}], - any:create(orber_tc:null(), null)))), - ?match(false, eval(T5, ?not_CreateSE("DomainName","TypeName", - "EventName", [], - [#'CosNotification_Property'{name="memsize", - value=any:create(orber_tc:float(), 5.5)}, - #'CosNotification_Property'{name="cputime", - value=any:create(orber_tc:float(), 0.00078431137)}, - #'CosNotification_Property'{name="filesize", - value=any:create(orber_tc:float(), 500)}], - any:create(orber_tc:null(), null)))), - ?match({error, _}, eval(T5, ?not_CreateSE("DomainName","TypeName", - "EventName", [], - [#'CosNotification_Property'{name="memsize", - value=any:create(orber_tc:float(), 5.5)}, - #'CosNotification_Property'{name="filesize", - value=any:create(orber_tc:float(), 500)}], - any:create(orber_tc:null(), null)))), - - ?match(true, eval(T5, ?not_CreateSE("DomainName","TypeName", - "EventName", [], [], - any:create(orber_tc:sequence('CosNotification_Property':tc(),0), - [#'CosNotification_Property'{name="memsize", - value=any:create(orber_tc:float(), 5.5)}, - #'CosNotification_Property'{name="cputime", - value=any:create(orber_tc:float(), 0.00078431137)}, - #'CosNotification_Property'{name="filesize", - value=any:create(orber_tc:float(), 500000)}])))), - ?match(false, eval(T5, ?not_CreateSE("DomainName","TypeName", - "EventName", [], [], - any:create(orber_tc:sequence('CosNotification_Property':tc(),0), - [#'CosNotification_Property'{name="memsize", - value=any:create(orber_tc:float(), 5.5)}, - #'CosNotification_Property'{name="cputime", - value=any:create(orber_tc:float(), 0.00078431137)}, - #'CosNotification_Property'{name="filesize", - value=any:create(orber_tc:float(), 500)}])))), - ?match({error, _}, eval(T5, ?not_CreateSE("DomainName","TypeName", - "EventName", [], [], - any:create(orber_tc:sequence('CosNotification_Property':tc(),0), - [#'CosNotification_Property'{name="memsize", - value=any:create(orber_tc:float(), 5.5)}, - #'CosNotification_Property'{name="filesize", - value=any:create(orber_tc:float(), 500)}])))), - - ?match(true, eval(T5, any:create(orber_tc:sequence('CosNotification_Property':tc(),0), - [#'CosNotification_Property'{name="memsize", - value=any:create(orber_tc:float(), 5.5)}, - #'CosNotification_Property'{name="cputime", - value=any:create(orber_tc:float(), 0.00078431137)}, - #'CosNotification_Property'{name="filesize", - value=any:create(orber_tc:float(), 500000)}]))), - ?match(false, eval(T5, any:create(orber_tc:sequence('CosNotification_Property':tc(),0), - [#'CosNotification_Property'{name="memsize", - value=any:create(orber_tc:float(), 5.5)}, - #'CosNotification_Property'{name="cputime", - value=any:create(orber_tc:float(), 0.00078431137)}, - #'CosNotification_Property'{name="filesize", - value=any:create(orber_tc:float(), 500)}]))), - ?match({error, _}, eval(T5, any:create(orber_tc:sequence('CosNotification_Property':tc(),0), - [#'CosNotification_Property'{name="memsize", - value=any:create(orber_tc:float(), 5.5)}, - #'CosNotification_Property'{name="filesize", - value=any:create(orber_tc:float(), 500)}]))), - - %% Accept events where a threshold has the unscoped type name 'data'. - {ok,T6} = ?match({ok, _}, create_filter("exist $threshold._type_id and $threshold._type_id == 'data'")), - ?match(true, eval(T6, any:create(orber_tc:alias(notify_test_data:id(), - "threshold", - notify_test_data:tc()), - #notify_test_data{score = 10, name = "Erlang"}))), - - - - ?match(true, eval(T6, ?not_CreateSE("DomainName","TypeName", - "EventName", [], - [#'CosNotification_Property' - {name="threshold", - value=any:create(notify_test_data:tc(), - #notify_test_data - {score = 10, - name = "Erlang"})}], - any:create(orber_tc:null(), null)))), - - - ?match(true, eval(T6, ?not_CreateSE("DomainName","TypeName", - "EventName", [], - [#'CosNotification_Property' - {name="NotThreshold", - value=any:create(notify_test_data:tc(), - #notify_test_data - {score = 10, - name = "Erlang"})}], - any:create(orber_tc:alias(notify_test_data:id(), - "threshold", - notify_test_data:tc()), - #notify_test_data{score = 10, name = "Erlang"})))), - - - - %% Accept events with a serviceUser property of the correct standard type. - {ok,T7} = ?match({ok, _}, create_filter("$violation(TestData)._repos_id == 'IDL:notify_test/data:1.0'")), - ?match(true, eval(T7, ?not_CreateSE("DomainName","TypeName", - "EventName", [], - [#'CosNotification_Property' - {name="violation", - value=any:create(orber_tc:array('CosNotification_Property':tc(),0), - [#'CosNotification_Property' - {name="TestData", - value=any:create(notify_test_data:tc(), - #notify_test_data - {score=100, - name="perfect score"})}])}], - any:create(orber_tc:null(), null)))), - - {ok,T8} = ?match({ok, _}, create_filter("$type_name == 'CommunicationsAlarm' and $event_name == 'lost_packet' and $priority < 2")), - %% All correct - Event1 = ?not_CreateSE("DomainName","CommunicationsAlarm", - "lost_packet", - [#'CosNotification_Property'{name="priority", - value=any:create(orber_tc:short(), 1)}], - [], any:create(orber_tc:null(), null)), - %% Priority to high - Event2 = ?not_CreateSE("DomainName","CommunicationsAlarm", - "lost_packet", - [#'CosNotification_Property'{name="priority", - value=any:create(orber_tc:short(), 2)}], - [], any:create(orber_tc:null(), null)), - %% Misspell event_name, i.e., lost_packets instead of lost_packet - Event3 = ?not_CreateSE("DomainName","CommunicationsAlarm", - "lost_packets", - [#'CosNotification_Property'{name="priority", - value=any:create(orber_tc:short(), 1)}], - [], any:create(orber_tc:null(), null)), - %% Another type_name - Event4 = ?not_CreateSE("DomainName","TemperatureAlarm", - "lost_packets", - [#'CosNotification_Property'{name="priority", - value=any:create(orber_tc:short(), 1)}], - [], any:create(orber_tc:null(), null)), - - ?match(true, eval(T8, Event1)), - ?match(false, eval(T8, Event2)), - ?match(false, eval(T8, Event3)), - ?match(false, eval(T8, Event4)), - - {ok,T9} = ?match({ok, _}, create_filter("$gpa < 80 or $tests(midterm) > $tests(final) or $monthly_attendance[3] < 10")), - - %% midterm > final yields true, the others false - Event5 = ?not_CreateSE("DomainName","TypeName", - "EventName", [], - [#'CosNotification_Property' - {name="tests", - value=any:create(orber_tc:array('CosNotification_Property':tc(),0), - [#'CosNotification_Property'{name="midterm", - value=any:create(orber_tc:short(), 70)}, - #'CosNotification_Property'{name="final", - value=any:create(orber_tc:short(), 60)}])}, - #'CosNotification_Property'{name="monthly_attendance", - value=any:create(orber_tc:array(orber_tc:short(), 0), - {0,1,2,10})}, - #'CosNotification_Property'{name="gpa", - value=any:create(orber_tc:short(), 90)}], - any:create(orber_tc:null(), null)), - - %% monthly_attendance[3] < 10 yields true, the others false - Event6 = ?not_CreateSE("DomainName","TypeName", - "EventName", [], - [#'CosNotification_Property'{name="tests", - value=any:create(orber_tc:array('CosNotification_Property':tc(),0), - [#'CosNotification_Property'{name="midterm", - value=any:create(orber_tc:short(), 70)}, - #'CosNotification_Property'{name="final", - value=any:create(orber_tc:short(), 80)}])}, - #'CosNotification_Property'{name="monthly_attendance", - value=any:create(orber_tc:array(orber_tc:short(), 0), - {0,1,2,9})}, - #'CosNotification_Property'{name="gpa", - value=any:create(orber_tc:short(), 90)}], - any:create(orber_tc:null(), null)), - - %% gpa < 80 true, rest false. - Event7 = ?not_CreateSE("DomainName","TypeName", - "EventName", [], - [#'CosNotification_Property'{name="tests", - value=any:create(orber_tc:array('CosNotification_Property':tc(),0), - [#'CosNotification_Property'{name="midterm", - value=any:create(orber_tc:short(), 70)}, - #'CosNotification_Property'{name="final", - value=any:create(orber_tc:short(), 80)}])}, - #'CosNotification_Property'{name="monthly_attendance", - value=any:create(orber_tc:array(orber_tc:short(), 0), - {0,1,2,10})}, - #'CosNotification_Property'{name="gpa", - value=any:create(orber_tc:short(), 70)}], - any:create(orber_tc:null(), null)), - - %% All false - Event8 = ?not_CreateSE("DomainName","TypeName", - "EventName", [], - [#'CosNotification_Property'{name="tests", - value=any:create(orber_tc:array('CosNotification_Property':tc(),0), - [#'CosNotification_Property'{name="midterm", - value=any:create(orber_tc:short(), 70)}, - #'CosNotification_Property'{name="final", - value=any:create(orber_tc:short(), 80)}])}, - #'CosNotification_Property'{name="monthly_attendance", - value=any:create(orber_tc:array(orber_tc:short(), 0), - {0,1,2,10})}, - #'CosNotification_Property'{name="gpa", - value=any:create(orber_tc:short(), 80)}], - any:create(orber_tc:null(), null)), - - ?match(true, eval(T9, Event5)), - ?match(true, eval(T9, Event6)), - ?match(true, eval(T9, Event7)), - ?match(false, eval(T9, Event8)), - ok. - -%%----------------------------------------------------------------- -%% Misc grammar tests -%%----------------------------------------------------------------- -positional_api(_Config) -> - {ok,T1} = ?match({ok, _}, create_filter("$.3 < 80 or $.1(midterm) > $.1(final) or $.2[3] < 10")), - - %% midterm > final yields true, the others false - Event1 = any:create(notify_test_studies:tc(), #notify_test_studies - {gpa = 90, - tests = [#'CosNotification_Property' - {name="midterm", value=any:create(orber_tc:short(), 70)}, - #'CosNotification_Property' - {name="final", value=any:create(orber_tc:short(), 60)}], - monthly_attendance = {0,1,2,10}}), - %% monthly_attendance[3] < 10 yields true, the others false - Event2 = any:create(notify_test_studies:tc(), #notify_test_studies - {gpa = 90, - tests = [#'CosNotification_Property' - {name="midterm", value=any:create(orber_tc:short(), 70)}, - #'CosNotification_Property' - {name="final", value=any:create(orber_tc:short(), 80)}], - monthly_attendance = {0,1,2,9}}), - %% gpa < 80 true, rest false. - Event3 = any:create(notify_test_studies:tc(), #notify_test_studies - {gpa = 70, - tests = [#'CosNotification_Property' - {name="midterm", value=any:create(orber_tc:short(), 70)}, - #'CosNotification_Property' - {name="final", value=any:create(orber_tc:short(), 80)}], - monthly_attendance = {0,1,2,10}}), - %% All false - Event4 = any:create(notify_test_studies:tc(), #notify_test_studies - {gpa = 80, - tests = [#'CosNotification_Property' - {name="midterm", value=any:create(orber_tc:short(), 70)}, - #'CosNotification_Property' - {name="final", value=any:create(orber_tc:short(), 80)}], - monthly_attendance = {0,1,2,10}}), - - ?match(true, eval(T1, Event1)), - ?match(true, eval(T1, Event2)), - ?match(true, eval(T1, Event3)), - ?match(false, eval(T1, Event4)), - - {ok,T2} = ?match({ok, _}, create_filter("$.0.0.0.1 == 'CommunicationsAlarm'")), - - Event5 = ?not_CreateSE("DomainName","CommunicationsAlarm", - "lost_packet", [], [], - any:create(orber_tc:null(), null)), - - ?match(true, eval(T2, Event5)), - - ok. - -%%----------------------------------------------------------------- -%% Components grammar tests -%%----------------------------------------------------------------- -components_api(_Config) -> - {ok,T1} = ?match({ok, _}, create_filter("$ == 2")), - ?match(true, eval(T1, ?not_CreateSE("DomainName","TypeName","EventName", - [],[], any:create(orber_tc:short(), 2)))), - ?match(true, eval(T1, any:create(orber_tc:short(), 2))), - ?match(false, eval(T1, ?not_CreateSE("DomainName","TypeName","EventName", - [],[], any:create(orber_tc:short(), 3)))), - ?match(false, eval(T1, any:create(orber_tc:short(), 3))), - - %% Select "MOVIE" events featuring at least 3 of the Marx Brothers. - {ok,T2} = ?match({ok, _}, create_filter("$type_name == 'MOVIE' and (('groucho' in $.starlist) + ('chico' in $.starlist) + ('harpo' in $.starlist) + ('zeppo' in $.starlist) + ('gummo' in $.starlist)) > 2")), - ?match(true, eval(T2, ?not_CreateSE("DomainName","MOVIE", "EventName", [], [], - any:create(orber_tc:alias("IFRId","starlist",tk_any), - any:create(orber_tc:sequence(orber_tc:string(0),0), - ["groucho", "harpo", "sam", "gummo"]))))), - ?match(false, eval(T2, ?not_CreateSE("DomainName","MOVIE", "EventName", [], [], - any:create(orber_tc:alias("IFRId","starlist",tk_any), - any:create(orber_tc:sequence(orber_tc:string(0),0), - ["frodo", "bilbo", "sam", "gummo"]))))), - - %% Accept only recent events (e.g., generated within the last 15 minutes or so). - {ok,_T3} = ?match({ok, _}, create_filter("$origination_timestamp.high + 2 < $curtime.high")), - - - %% Accept students that took all 3 tests and had an average score of at least 80%. - {ok,T4} = ?match({ok, _}, create_filter("$.test._length == 3 and ($.test[0].score + $.test[1].score + $.test[2].score)/3 >=80")), - ?match(true, eval(T4, ?not_CreateSE("DomainName","TypeName", "EventName", [], [], - any:create(orber_tc:alias("IFRId","test",tk_any), - any:create(orber_tc:array(notify_test_data:tc(),0), - {#notify_test_data{score=75}, - #notify_test_data{score=80}, - #notify_test_data{score=85}}))))), - ?match(false, eval(T4, ?not_CreateSE("DomainName","TypeName", "EventName", [], [], - any:create(orber_tc:alias("IFRId","test",tk_any), - any:create(orber_tc:array(notify_test_data:tc(),0), - {#notify_test_data{score=75}, - #notify_test_data{score=80}, - #notify_test_data{score=80}}))))), - ?match(false, eval(T4, ?not_CreateSE("DomainName","TypeName", "EventName", [], [], - any:create(orber_tc:alias("IFRId","test",tk_any), - any:create(orber_tc:array(notify_test_data:tc(),0), - {#notify_test_data{score=75}, - #notify_test_data{score=80}}))))), - - %% Select processes that exceed a certain usage threshold. - {ok,T5} = ?match({ok, _}, create_filter("$.memsize / 5.5 + $.cputime * 1275.0 + $.filesize * 1.25 > 500000.0")), - ?match(true, eval(T5, ?not_CreateSE("DomainName","TypeName", "EventName", [], [], - any:create(notify_test_computer:tc(), - #notify_test_computer - {memsize=5.5, - cputime = 0.00078431137, - filesize = 500000})))), - ?match(false, eval(T5, ?not_CreateSE("DomainName","TypeName", "EventName", [], [], - any:create(notify_test_computer:tc(), - #notify_test_computer - {memsize=5.5, - cputime = 0.00078431137, - filesize = 500})))), - ?match({error,_}, eval(T5, ?not_CreateSE("DomainName","TypeName", "EventName", [], [], - any:create(notify_test_computer:tc(), - #notify_test_computer - {memsize=5.5, - cputime = 0.00078431137})))), - - %% Accept only Notification Service structured events. - {ok,T6} = ?match({ok, _}, create_filter("$._repos_id == 'IDL:omg.org/CosNotification/StructuredEvent:1.0'")), - ?match(true, eval(T6, ?not_CreateSE("DomainName","CommunicationsAlarm", - "EventName", - [], [], any:create(orber_tc:null(), null)))), - - - - %% Accept only those events that have a specified security "rights list". - {ok,T7} = ?match({ok, _}, create_filter("exist $.header.variable_header(required_rights)")), - ?match(false, eval(T7, ?not_CreateSE("DomainName","CommunicationsAlarm", - "lost_packet", - [#'CosNotification_Property'{name="priority", - value=any:create(orber_tc:short(), 1)}], - [], any:create(orber_tc:null(), null)))), - ?match(true, eval(T7, ?not_CreateSE("DomainName","CommunicationsAlarm", - "lost_packet", - [#'CosNotification_Property'{name="required_rights", - value=any:create(orber_tc:short(), 1)}], - [], any:create(orber_tc:null(), null)))), - - - {ok,T8} = ?match({ok, _}, create_filter("$.header.fixed_header.event_type.type_name == 'CommunicationsAlarm' and $.header.fixed_header.event_name == 'lost_packet' and $.header.variable_header(priority) < 2")), - %% All correct - Event1 = ?not_CreateSE("DomainName","CommunicationsAlarm", - "lost_packet", - [#'CosNotification_Property'{name="priority", - value=any:create(orber_tc:short(), 1)}], - [], any:create(orber_tc:null(), null)), - %% Priority to high - Event2 = ?not_CreateSE("DomainName","CommunicationsAlarm", - "lost_packet", - [#'CosNotification_Property'{name="priority", - value=any:create(orber_tc:short(), 2)}], - [], any:create(orber_tc:null(), null)), - %% Misspell event_name, i.e., lost_packets instead of lost_packet - Event3 = ?not_CreateSE("DomainName","CommunicationsAlarm", - "lost_packets", - [#'CosNotification_Property'{name="priority", - value=any:create(orber_tc:short(), 1)}], - [], any:create(orber_tc:null(), null)), - %% Another type_name - Event4 = ?not_CreateSE("DomainName","TemperatureAlarm", - "lost_packets", - [#'CosNotification_Property'{name="priority", - value=any:create(orber_tc:short(), 1)}], - [], any:create(orber_tc:null(), null)), - - ?match(true, eval(T8, Event1)), - ?match(false, eval(T8, Event2)), - ?match(false, eval(T8, Event3)), - ?match(false, eval(T8, Event4)), - - - {ok,T9} = ?match({ok, _}, create_filter("$.gpa < 80 or $.tests(midterm) > $.tests(final) or $.monthly_attendance[3] < 10")), - - %% midterm > final yields true, the others false - Event5 = ?not_CreateSE("DomainName","TypeName", - "EventName", [], [], - any:create(notify_test_studies:tc(), #notify_test_studies - {gpa = 90, - tests = [#'CosNotification_Property' - {name="midterm", value=any:create(orber_tc:short(), 70)}, - #'CosNotification_Property' - {name="final", value=any:create(orber_tc:short(), 60)}], - monthly_attendance = {0,1,2,10}})), - %% monthly_attendance[3] < 10 yields true, the others false - Event6 = ?not_CreateSE("DomainName","TypeName", - "EventName", [], [], - any:create(notify_test_studies:tc(), #notify_test_studies - {gpa = 90, - tests = [#'CosNotification_Property' - {name="midterm", value=any:create(orber_tc:short(), 70)}, - #'CosNotification_Property' - {name="final", value=any:create(orber_tc:short(), 80)}], - monthly_attendance = {0,1,2,9}})), - %% gpa < 80 true, rest false. - Event7 = ?not_CreateSE("DomainName","TypeName", - "EventName", [], [], - any:create(notify_test_studies:tc(), #notify_test_studies - {gpa = 70, - tests = [#'CosNotification_Property' - {name="midterm", value=any:create(orber_tc:short(), 70)}, - #'CosNotification_Property' - {name="final", value=any:create(orber_tc:short(), 80)}], - monthly_attendance = {0,1,2,10}})), - %% All false - Event8 = ?not_CreateSE("DomainName","TypeName", - "EventName", [], [], - any:create(notify_test_studies:tc(), #notify_test_studies - {gpa = 80, - tests = [#'CosNotification_Property' - {name="midterm", value=any:create(orber_tc:short(), 70)}, - #'CosNotification_Property' - {name="final", value=any:create(orber_tc:short(), 80)}], - monthly_attendance = {0,1,2,10}})), - - ?match(true, eval(T9, Event5)), - ?match(true, eval(T9, Event6)), - ?match(true, eval(T9, Event7)), - ?match(false, eval(T9, Event8)), - ok. - - -%%----------------------------------------------------------------- -%% Internal functions -%%----------------------------------------------------------------- - -%%-------------------- End of Module ------------------------------ |