/*______________ | ______ | U I Z E J A V A S C R I P T F R A M E W O R K | / / | --------------------------------------------------- | / O / | MODULE : Uize.Test.Uize.Util.ModuleNaming Class | / / / | | / / / /| | ONLINE : http://uize.com | /____/ /__/_| | COPYRIGHT : (c)2014-2016 UIZE | /___ | LICENSE : Available under MIT License or GNU General Public License |_______________| http://uize.com/license.html */ /* Module Meta Data type: Test importance: 1 codeCompleteness: 100 docCompleteness: 100 */ /*? Introduction The =Uize.Test.Uize.Util.ModuleNaming= module defines a suite of unit tests for the =Uize.Util.ModuleNaming= module. *DEVELOPERS:* `Chris van Rensburg` */ Uize.module ({ name:'Uize.Test.Uize.Util.ModuleNaming', required:'Uize.Class', builder:function () { 'use strict'; return Uize.Test.resolve ({ title:'Test for Uize.Util.ModuleNaming Module', test:[ Uize.Test.requiredModulesTest ('Uize.Util.ModuleNaming'), Uize.Test.staticMethodsTest ([ ['Uize.Util.ModuleNaming.getModuleNameFromTestModuleName',[ ['When a module name is not a test module name, it is returned as is', 'Namespace.MyModule', 'Namespace.MyModule' ], ['When a module name is a test module name, the name of the module that the test module tests is returned', 'Namespace.Test.Namespace.MyModule', 'Namespace.MyModule' ] ]], ['Uize.Util.ModuleNaming.getTestModuleName',[ ['When a module name is already a test module name, it is returned as is', 'Namespace.Test.Namespace.MyModule', 'Namespace.Test.Namespace.MyModule' ], ['When a module name is not a test module name, the name of the test module for the specified module is returned', 'Namespace.MyModule', 'Namespace.Test.Namespace.MyModule' ] ]], ['Uize.Util.ModuleNaming.getNamespace',[ ['When a module name is just a namespace, it is returned as is', 'Namespace', 'Namespace' ], ['When a module name is for a module that is under a namespace, just the namespace segment is returned', 'Namespace.MyModule.MySubModule', 'Namespace' ] ]], ['Uize.Util.ModuleNaming.isExtensionModule',[ ['A module name is considered to be an extension module name if the last segment of the name starts with a lowercase "x" and is followed by a capital letter', 'MyNamespace.MyClass.xMyExtension', true ], ['A top level namespace module is not considered to be an extension module', 'MyNamespace', false ], ['A class module is not considered to be an extension module', 'MyNamespace.MyClass', false ], ['A mixin module is not considered to be an extension module', 'MyNamespace.MyClass.mMyMixin', false ], ['A module name that contains a segment that starts with a lowercase "x" and is followed by a capital letter is not considered to be an extension module name if the segment is not the last segment of the name', 'MyNamespace.MyClass.xFoo.Bar', false ], ['A top level namespace that starts with a lowercase "x" and is followed by a capital letter is not considered to be an extension module name', 'xFoo', false ], ['A module name where the last segment starts with a lowercase "x" but where the next character is a lowercase letter is not considered to be an extension module name', 'MyNamespace.MyClass.xfoo', false ], ['A module name where the last segment starts with a lowercase "x" but where the next character is an underscore is not considered to be an extension module name', 'MyNamespace.MyClass.x_Foo', false ], ['A module name where the last segment starts with a lowercase "x" but where the next character is a dollar is not considered to be an extension module name', 'MyNamespace.MyClass.x$Foo', false ], ['A module name where the last segment starts with a lowercase "x" but where the next character is a digit is not considered to be an extension module name', 'MyNamespace.MyClass.x4Foo', false ] ]], ['Uize.Util.ModuleNaming.isMixinModule',[ ['A module name is considered to be a mixin module name if the last segment of the name starts with a lowercase "m" and is followed by a capital letter', 'MyNamespace.MyClass.mMyMixin', true ], ['A top level namespace module is not considered to be a mixin module', 'MyNamespace', false ], ['A class module is not considered to be a mixin module', 'MyNamespace.MyClass', false ], ['An extension module is not considered to be a mixin module', 'MyNamespace.MyClass.xMyExtension', false ], ['A module name that contains a segment that starts with a lowercase "m" and is followed by a capital letter is not considered to be a mixin module name if the segment is not the last segment of the name', 'MyNamespace.MyClass.mFoo.Bar', false ], ['A top level namespace that starts with a lowercase "m" and is followed by a capital letter is not considered to be a mixin module name', 'mFoo', false ], ['A module name where the last segment starts with a lowercase "m" but where the next character is a lowercase letter is not considered to be a mixin module name', 'MyNamespace.MyClass.mfoo', false ], ['A module name where the last segment starts with a lowercase "m" but where the next character is an underscore is not considered to be a mixin module name', 'MyNamespace.MyClass.m_Foo', false ], ['A module name where the last segment starts with a lowercase "m" but where the next character is a dollar is not considered to be a mixin module name', 'MyNamespace.MyClass.m$Foo', false ], ['A module name where the last segment starts with a lowercase "m" but where the next character is a digit is not considered to be a mixin module name', 'MyNamespace.MyClass.m4Foo', false ] ]], ['Uize.Util.ModuleNaming.isTestModule',[ ['When a module name is not a test module name, the value false is returned', 'Namespace.MyModule', false ], ['When a module name is a test module name, the value true is returned', 'Namespace.Test.Namespace.MyModule', true ], ['The test namespace for a given root namespace is not considered a test module', 'Namespace.Test', false ], ['A module under the test namespace (e.g. Namespace.Test) for a given root namespace (e.g. Namespace) is not considered a test module if the first module name segment (e.g. Foo) under the test namespace is not the root namespace', 'Namespace.Test.Foo', false ] ]], ['Uize.Util.ModuleNaming.isModuleName',[ ['A module name may contain only a valid format namespace segment', 'Uize', true ], ['A module name may contain a valid format namespace segment along with multiple valid format sub-namespace segments', 'Uize.Widget.Button', true ], ['Both the top level namespace segment and all sub-namespace segments can be just one character in length', 'A.B.C', true ], ['Both the top level namespace segment and sub-namespace segments may contain digits', 'A123456789.B123456789', true ], ['The top level namespace segment and sub-namespace segments may start with, contain, and end with a dollar character', '$Name$Space$.$My$Module$', true ], ['The top level namespace segment and sub-namespace segments may start with, contain, and end with an underscore character', '_Name_Space_._My_Module_', true ], ['A module name may not end with a blank sub-namespace segment', 'Namespace.', false ], ['A module name may not start with a blank top level namespace segment', '.MyModule', false ], ['A module name may not contain an inner blank sub-namespace segment', 'Namespace..MyModule', false ], ['A module name may not have a top level namespace segment that contains invalid characters', 'Name-Space.MyModule', false ], ['A module name may not have a sub-namespace segment that contains invalid characters', 'NameSpace.My-Module', false ], ['The top level namespace of a module name may not start with a digit', '1Namespace.MyModule', false ], ['A sub-namespace of a module name may not start with a digit', 'Namespace.1MyModule', false ] ]] ]) ] }); } });