/
PragmaTest.class.st
100 lines (86 loc) · 3.04 KB
/
PragmaTest.class.st
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
"
SUnit tests for Pragma class
"
Class {
#name : #PragmaTest,
#superclass : #TestCase,
#instVars : [
'atPragma',
'anotherAtPragma',
'yetAnotherAtPragma',
'atPutPragma'
],
#category : #'Kernel-Tests-Pragmas'
}
{ #category : #helper }
PragmaTest >> methodWithPragma [
<testPragmaArg1: #toto arg2: 2 arg3: true>
]
{ #category : #running }
PragmaTest >> setUp [
super setUp.
atPragma := Pragma for: (Object methodDict at: #at:) selector: #primitive: arguments: (Array with: 60).
anotherAtPragma := Pragma for: (Object methodDict at: #at:) selector: #primitive: arguments: (Array with: 60).
yetAnotherAtPragma := Pragma for: (Object methodDict at: #at:) selector: #primitive: arguments: (Array with: 60).
atPutPragma := Pragma for: (Object methodDict at: #at:) selector: #primitive: arguments: (Array with: 61).
]
{ #category : #'tests - cache' }
PragmaTest >> testAllNamed [
self assert: ((Pragma allNamed: #primitive:) first selector) equals: #primitive:
]
{ #category : #tests }
PragmaTest >> testArgumentAt [
| pragma |
pragma := (self class >> #methodWithPragma) pragmas anyOne.
self assert: (pragma argumentAt: 1) equals: #toto.
self assert: (pragma argumentAt: 2) equals: 2.
self assert: (pragma argumentAt: 3)
]
{ #category : #tests }
PragmaTest >> testArgumentNamed [
| pragma |
pragma := (self class >> #methodWithPragma) pragmas anyOne.
self assert: (pragma argumentNamed: #testPragmaArg1) equals: #toto.
self assert: (pragma argumentNamed: #arg2) equals: 2.
self assert: (pragma argumentNamed: #arg3).
self should: [ pragma argumentNamed: #nonExisting ] raise: Error
]
{ #category : #tests }
PragmaTest >> testArgumentNamedIfNone [
| pragma |
pragma := (self class >> #methodWithPragma) pragmas anyOne.
self assert: (pragma argumentNamed: #arg3 ifNone: [ false ]).
self deny: (pragma argumentNamed: #nonExisting ifNone: [ false ])
]
{ #category : #tests }
PragmaTest >> testCopy [
| copy |
copy := atPragma copy.
self deny: atPragma identicalTo: copy.
self assert: atPragma method identicalTo: copy method.
self assert: atPragma selector identicalTo: copy selector.
self assert: atPragma arguments identicalTo: copy arguments
]
{ #category : #tests }
PragmaTest >> testEqual [
self assert: atPragma equals: atPragma.
self assert: atPragma equals: anotherAtPragma.
self assert: anotherAtPragma equals: atPragma.
self assert: atPragma equals: anotherAtPragma.
self assert: anotherAtPragma equals: yetAnotherAtPragma.
self assert: yetAnotherAtPragma equals: atPragma.
self deny: atPragma equals: atPutPragma
]
{ #category : #tests }
PragmaTest >> testHash [
self assert: atPragma hash equals: atPragma hash.
self assert: atPragma hash equals: anotherAtPragma hash.
self assert: anotherAtPragma hash equals: atPragma hash.
self assert: atPragma hash equals: anotherAtPragma hash.
self assert: anotherAtPragma hash equals: yetAnotherAtPragma hash.
self assert: yetAnotherAtPragma hash equals: atPragma hash
]
{ #category : #'tests - cache' }
PragmaTest >> testallInstalled [
self assert: ((Pragma allInstalled) first class ) equals: Pragma
]