tests/RGClassDefinitionTest.st
changeset 2 e439b82dda7d
parent 0 43cb9f3e345e
child 3 ed5aae792d24
equal deleted inserted replaced
1:24b88532f6ef 2:e439b82dda7d
    32                classified: 'accessing' 
    32                classified: 'accessing' 
    33                sourced: 'fakeMethod
    33                sourced: 'fakeMethod
    34                             ^lastIndex - firstIndex + 1'.
    34                             ^lastIndex - firstIndex + 1'.
    35     
    35     
    36     self assert: (newClass hasMethods).
    36     self assert: (newClass hasMethods).
    37     self assert: (newClass selectors = #(add: size)).
    37     self assert: (newClass selectors size == 2).
       
    38     self assert: (newClass selectors includesAll: #(add: size)).
    38     self assert: (newClass includesSelector: #add:).
    39     self assert: (newClass includesSelector: #add:).
    39     self assert: ((newClass methodNamed: #add:) = newMethod).
    40     self assert: ((newClass methodNamed: #add:) = newMethod).
    40     self assert: (newClass methods size = 2).
    41     self assert: (newClass methods size = 2).
    41     self assert: (newClass selectors size = 2).
    42     self assert: (newClass selectors size = 2).
    42     self assert: (newClass allSelectors size = 2).  "no hierarchy"
    43     self assert: (newClass allSelectors size = 2).  "no hierarchy"
    44     newMethod:= newClass methodNamed: #size.
    45     newMethod:= newClass methodNamed: #size.
    45     self assert: (newMethod parent = newClass).
    46     self assert: (newMethod parent = newClass).
    46     
    47     
    47     self assert: ((newClass compiledMethodNamed: #size) notNil).
    48     self assert: ((newClass compiledMethodNamed: #size) notNil).
    48     self assert: ((newClass compiledMethodNamed: #fakeMethod) isNil)
    49     self assert: ((newClass compiledMethodNamed: #fakeMethod) isNil)
       
    50 
       
    51     "Modified: / 29-08-2015 / 08:04:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    49 !
    52 !
    50 
    53 
    51 testAsClassDefinition
    54 testAsClassDefinition
    52     | newClass |
    55     | newClass |
    53 
    56 
    64 !
    67 !
    65 
    68 
    66 testAsClassDefinition2
    69 testAsClassDefinition2
    67 
    70 
    68     | newClass |
    71     | newClass |
    69     newClass:= Trait asRingDefinition.
    72     newClass:= Class asRingDefinition.
    70     
    73     
    71     self assert: (newClass isRingObject).
    74     self assert: (newClass isRingObject).
    72     self assert: (newClass isClass).  
    75     self assert: (newClass isClass).  
    73     self assert: (newClass name == #Trait).  
    76     self assert: (newClass name == #Class).  
    74     self assert: (newClass category notNil).
    77     self assert: (newClass category notNil).
    75     self assert: (newClass superclassName notNil).
    78     self assert: (newClass superclassName notNil).
    76     self assert: (newClass  traitCompositionSource = 'TClass').
    79 "/    self assert: (newClass  traitCompositionSource = 'TClass').
    77     
    80     
    78     self assert: (newClass theMetaClass isRingObject).
    81     self assert: (newClass theMetaClass isRingObject).
    79     self assert: (newClass theMetaClass isClass).
    82     self assert: (newClass theMetaClass isClass).
    80     self assert: (newClass theMetaClass traitCompositionSource = 'TClass classTrait').
    83 "/    self assert: (newClass theMetaClass traitCompositionSource = 'TClass classTrait').
    81     
    84 
       
    85     "Modified: / 29-08-2015 / 08:05:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    82 !
    86 !
    83 
    87 
    84 testAsClassDefinitionSourceDefinition
    88 testAsClassDefinitionSourceDefinition
    85 
    89 
    86     | newClass |
    90     | newClass |
    87     newClass:= Trait asRingDefinition.
    91     newClass:= Class asRingDefinition.
    88     self assert: (newClass definitionSource =  'TraitDescription subclass: #Trait
    92     self assert: (newClass definitionSource = '"{ Package: ''stx:libbasic'' }"
    89     uses: TClass
    93 
    90     instanceVariableNames: ''name environment classTrait category''
    94 "{ NameSpace: Smalltalk }"
    91     classVariableNames: ''''
    95 
    92     poolDictionaries: ''''
    96 ClassDescription subclass:#Class
    93     category: ''Traits-Kernel''').
    97         instanceVariableNames:''name category classvars comment subclasses classFilename package
    94     
    98                 revision environment signature attributes''
    95     self assert: (newClass theMetaClass definitionSource =  'Trait class
    99         classVariableNames:''DefaultCategoryForSTV DefaultCategoryForVAGE
    96     uses: TClass classTrait
   100                 DefaultCategoryForDolphin ValidateSourceOnlyOnce ValidatedClasses
    97     instanceVariableNames: ''''').
   101                 SubclassCacheSequenceNumber
    98     
   102                 DefaultCategoryForUncategorizedClasses
       
   103                 DefaultCategoryForUndeclaredClasses''
       
   104         poolDictionaries:''''
       
   105         category:''Kernel-Classes''
       
   106 ').
       
   107     
       
   108     self assert: (newClass theMetaClass definitionSource= 'Class class instanceVariableNames:''''
       
   109 
       
   110 "
       
   111  No other class instance variables are inherited by this class.
       
   112 "
       
   113 ').
       
   114 
       
   115     "Modified (format): / 29-08-2015 / 08:07:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    99 !
   116 !
   100 
   117 
   101 testAsRingDefinition
   118 testAsRingDefinition
   102     self assert: OrderedCollection asRingDefinition asRingDefinition isRingObject
   119     self assert: OrderedCollection asRingDefinition asRingDefinition isRingObject
   103 !
   120 !
   227 !
   244 !
   228 
   245 
   229 testWithClassInstanceVariables
   246 testWithClassInstanceVariables
   230     | newClass metaClass classInstVar |
   247     | newClass metaClass classInstVar |
   231     
   248     
   232     newClass:= RGClassDefinition named:  #HashTableSizes.
   249     newClass:= RGClassDefinition named:  #GenericException.
   233     newClass withMetaclass.
   250     newClass withMetaclass.
   234     metaClass:= newClass theMetaClass.
   251     metaClass:= newClass theMetaClass.
   235     metaClass addInstanceVariables: #(sizes).
   252     metaClass addInstanceVariables: #(NotifierString).
   236     
   253     
   237     self assert: (metaClass instanceVariables size = 1).
   254     self assert: (metaClass instanceVariables size = 1).
   238     self assert: (metaClass instVarNames size = 1).
   255     self assert: (metaClass instVarNames size = 1).
   239     self assert: (metaClass allInstVarNames size = 1).
   256     self assert: (metaClass allInstVarNames size = 1).
   240     
   257     
   241     classInstVar:= metaClass instanceVariableNamed: #sizes.
   258     classInstVar:= metaClass instanceVariableNamed: #NotifierString.
   242     self assert: (classInstVar notNil).
   259     self assert: (classInstVar notNil).
   243     self assert: (classInstVar parent = metaClass).
   260     self assert: (classInstVar parent = metaClass).
   244     self assert: (classInstVar isClassInstanceVariable).
   261     self assert: (classInstVar isClassInstanceVariable).
   245     self assert: (classInstVar isVariable).
   262     self assert: (classInstVar isVariable).
   246     self assert: (classInstVar parentName = metaClass name).
   263     self assert: (classInstVar parentName = metaClass name).
   247     self assert: (classInstVar realClass = HashTableSizes class).
   264     self assert: (classInstVar realClass = GenericException class).
   248     
   265     
   249     metaClass removeInstVarNamed: #sizes.
   266     metaClass removeInstVarNamed: #NotifierString.
   250     self assert: (metaClass instanceVariables isEmpty).
   267     self assert: (metaClass instanceVariables isEmpty).
   251     self assert: ((metaClass instanceVariableNamed: #sizes) isNil).
   268     self assert: ((metaClass instanceVariableNamed: #NotifierString) isNil).
   252     
   269 
       
   270     "Modified: / 29-08-2015 / 10:28:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   253 !
   271 !
   254 
   272 
   255 testWithClassVariables
   273 testWithClassVariables
   256     | newClass classVar |
   274     | newClass classVar |
   257     
   275