1: %%
    2: %% %CopyrightBegin%
    3: %% 
    4: %% Copyright Ericsson AB 1997-2011. All Rights Reserved.
    5: %% 
    6: %% The contents of this file are subject to the Erlang Public License,
    7: %% Version 1.1, (the "License"); you may not use this file except in
    8: %% compliance with the License. You should have received a copy of the
    9: %% Erlang Public License along with this software. If not, it can be
   10: %% retrieved online at http://www.erlang.org/.
   11: %% 
   12: %% Software distributed under the License is distributed on an "AS IS"
   13: %% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
   14: %% the License for the specific language governing rights and limitations
   15: %% under the License.
   16: %% 
   17: %% %CopyrightEnd%
   18: %%
   19: %%
   20: %%-----------------------------------------------------------------
   21: %% 
   22: %% Description:
   23: %% Test suite for the Names Library module
   24: %%
   25: %%-----------------------------------------------------------------
   26: -module(lname_SUITE).
   27: 
   28: -include_lib("test_server/include/test_server.hrl").
   29: -include_lib("orber/COSS/CosNaming/CosNaming.hrl").
   30: -include_lib("orber/COSS/CosNaming/lname.hrl").
   31: 
   32: -define(default_timeout, ?t:minutes(3)).
   33: 
   34: %%-----------------------------------------------------------------
   35: %% External exports
   36: %%-----------------------------------------------------------------
   37: -export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1, 
   38: 	 init_per_group/2,end_per_group/2]).
   39: 
   40: %%-----------------------------------------------------------------
   41: %% Internal exports
   42: %%-----------------------------------------------------------------
   43: -export([]).
   44: -compile(export_all).
   45: 
   46: %%-----------------------------------------------------------------
   47: %% Func: all/1
   48: %% Args: 
   49: %% Returns: 
   50: %%-----------------------------------------------------------------
   51: suite() -> [{ct_hooks,[ts_install_cth]}].
   52: 
   53: all() -> 
   54:     [lname_component, lname].
   55: 
   56: groups() -> 
   57:     [].
   58: 
   59: init_per_suite(Config) ->
   60:     Config.
   61: 
   62: end_per_suite(_Config) ->
   63:     ok.
   64: 
   65: init_per_group(_GroupName, Config) ->
   66:     Config.
   67: 
   68: end_per_group(_GroupName, Config) ->
   69:     Config.
   70: 
   71: 
   72: %%-----------------------------------------------------------------
   73: %% Init and cleanup functions.
   74: %%-----------------------------------------------------------------
   75: 
   76: init_per_testcase(_Case, Config) ->
   77:     ?line Dog=test_server:timetrap(?default_timeout),
   78:     [{watchdog, Dog}|Config].
   79: 
   80: 
   81: end_per_testcase(_Case, Config) ->
   82:     Dog = ?config(watchdog, Config),
   83:     test_server:timetrap_cancel(Dog),
   84:     ok.
   85: 
   86: 
   87: %%-----------------------------------------------------------------
   88: %% Test Case: name component handling tests
   89: %% Description: 
   90: %%-----------------------------------------------------------------
   91: lname_component(doc) -> ["Description", "more description"];
   92: lname_component(suite) -> [];
   93: lname_component(_) ->
   94:     create_test(),
   95:     get_tests(),
   96:     set_tests().
   97: 
   98: create_test() ->
   99:     ?line #'CosNaming_NameComponent'{} = lname_component:create(),
  100:     ok.
  101: 
  102: get_tests() ->
  103:     NC = #'CosNaming_NameComponent'{id="first", kind="apple"},
  104:     NC1 = #'CosNaming_NameComponent'{id="", kind="apple"},
  105:     NC2 = #'CosNaming_NameComponent'{id="first", kind=""},
  106:     ?line "first" = lname_component:get_id(NC),
  107:     ?line "apple" = lname_component:get_kind(NC),
  108:     ?line {'EXCEPTION', #'LNameComponent_NotSet'{}} =
  109: 	(catch lname_component:get_id(NC1)),
  110:     ?line {'EXCEPTION', #'LNameComponent_NotSet'{}} =
  111: 	(catch  lname_component:get_kind(NC2)),
  112:     ok.
  113: 
  114: set_tests() ->
  115:     NC = #'CosNaming_NameComponent'{id="first", kind="apple"},
  116:     ?line #'CosNaming_NameComponent'{id="second", kind="apple"} =
  117: 	lname_component:set_id(NC, "second"),
  118:     ?line #'CosNaming_NameComponent'{id="first", kind="pear"} =
  119: 	lname_component:set_kind(NC, "pear"),
  120:     ok.
  121: 
  122: %%-----------------------------------------------------------------
  123: %% Test Case: name handling tests
  124: %% Description: 
  125: %%-----------------------------------------------------------------
  126: lname(doc) -> ["Description", "more description"];
  127: lname(suite) -> [];
  128: lname(_) ->
  129:     Name = [#'CosNaming_NameComponent'{id="first", kind="apple"},
  130: 	    #'CosNaming_NameComponent'{id="last", kind="peach"},
  131: 	    #'CosNaming_NameComponent'{id="and", kind="plum"},
  132: 	    #'CosNaming_NameComponent'{id="always", kind="orange"}],
  133:     insert_tests(Name), 
  134:     get_tests(Name), 
  135:     delete_tests(Name), 
  136:     comparision_tests(Name),
  137:     convertion_tests(Name).
  138: 
  139: insert_tests(Name) ->
  140:     NC = #'CosNaming_NameComponent'{id="new", kind="pear"},
  141:     ?line [NC, #'CosNaming_NameComponent'{id="first", kind="apple"},
  142: 	   #'CosNaming_NameComponent'{id="last", kind="peach"},
  143: 	   #'CosNaming_NameComponent'{id="and", kind="plum"},
  144: 	   #'CosNaming_NameComponent'{id="always", kind="orange"}] =
  145: 	lname:insert_component(Name, 1, NC),
  146:     ?line [#'CosNaming_NameComponent'{id="first", kind="apple"},
  147: 	   #'CosNaming_NameComponent'{id="last", kind="peach"},
  148: 	   #'CosNaming_NameComponent'{id="and", kind="plum"},
  149: 	   #'CosNaming_NameComponent'{id="always", kind="orange"}, NC] =
  150: 	lname:insert_component(Name, 5, NC),
  151:     ?line [#'CosNaming_NameComponent'{id="first", kind="apple"},
  152: 	   #'CosNaming_NameComponent'{id="last", kind="peach"}, 
  153: 	   #'CosNaming_NameComponent'{id="and", kind="plum"}, NC,
  154: 	   #'CosNaming_NameComponent'{id="always", kind="orange"}] =
  155: 	lname:insert_component(Name, 4, NC),
  156:     ?line [#'CosNaming_NameComponent'{id="first", kind="apple"},
  157: 	   #'CosNaming_NameComponent'{id="last", kind="peach"}, NC,
  158: 	   #'CosNaming_NameComponent'{id="and", kind="plum"},
  159: 	   #'CosNaming_NameComponent'{id="always", kind="orange"}] =
  160: 	lname:insert_component(Name, 3, NC),
  161:     ?line {'EXCEPTION', #'LName_NoComponent'{}} =
  162: 	(catch lname:insert_component(Name, 6, NC)),
  163:     ?line {'EXCEPTION', #'LName_NoComponent'{}} =
  164: 	(catch lname:insert_component(Name, 0, NC)),
  165:     ?line {'EXCEPTION', #'LName_NoComponent'{}} =
  166: 	(catch lname:insert_component(Name, -2, NC)),
  167:     ok.
  168: 
  169: get_tests(Name) -> 
  170:     ?line #'CosNaming_NameComponent'{id="first", kind="apple"} =
  171: 	lname:get_component(Name, 1),
  172:     ?line #'CosNaming_NameComponent'{id="always", kind="orange"} =
  173: 	lname:get_component(Name, 4),
  174:     ?line #'CosNaming_NameComponent'{id="and", kind="plum"} =
  175: 	lname:get_component(Name, 3),
  176:     ?line {'EXCEPTION', #'LName_NoComponent'{}} =
  177: 	(catch lname:get_component(Name, 5)),
  178:     ?line {'EXCEPTION', #'LName_NoComponent'{}} =
  179: 	(catch lname:get_component(Name, 0)),
  180:     ?line {'EXCEPTION', #'LName_NoComponent'{}} =
  181: 	(catch lname:get_component(Name, -2)),
  182:     ok.
  183: 
  184: delete_tests(Name) ->
  185:     ?line [#'CosNaming_NameComponent'{id="last", kind="peach"},
  186: 	   #'CosNaming_NameComponent'{id="and", kind="plum"},
  187: 	   #'CosNaming_NameComponent'{id="always", kind="orange"}] =
  188: 	lname:delete_component(Name, 1),
  189:     ?line [#'CosNaming_NameComponent'{id="first", kind="apple"},
  190: 	   #'CosNaming_NameComponent'{id="last", kind="peach"},
  191: 	   #'CosNaming_NameComponent'{id="and", kind="plum"}] =
  192: 	lname:delete_component(Name, 4),
  193:     ?line [#'CosNaming_NameComponent'{id="first", kind="apple"},
  194: 	   #'CosNaming_NameComponent'{id="last", kind="peach"},
  195: 	   #'CosNaming_NameComponent'{id="always", kind="orange"}] =
  196: 	lname:delete_component(Name, 3),
  197:     ?line {'EXCEPTION', #'LName_NoComponent'{}} =
  198: 	(catch lname:delete_component(Name, 6)),
  199:     ?line {'EXCEPTION', #'LName_NoComponent'{}} =
  200: 	(catch lname:delete_component(Name, 0)),
  201:     ?line {'EXCEPTION', #'LName_NoComponent'{}} =
  202: 	(catch lname:delete_component(Name, -2)),
  203:     ok.
  204: 
  205: comparision_tests(Name) ->
  206:     ?line true = lname:equal(Name, Name),
  207:     ?line false = lname:equal(Name, lname:delete_component(Name, 2)),
  208:     ?line true = lname:less_than(lname:delete_component(Name, 2), Name),
  209:     ?line false = lname:less_than(Name, Name),
  210:     ?line false = lname:less_than(Name, lname:delete_component(Name, 2)),
  211:     ok.
  212: 
  213: convertion_tests(Name) ->
  214:     ?line Name = lname:from_idl_form(Name),
  215:     ?line Name = lname:to_idl_form(Name),
  216:     ok.