[View]  [Edit]  [Lock]  [References]  [Attachments]  [History]  [Home]  [Changes]  [Search]  [Help] 

test[jl8] 10

.
self running: 'Tests - core tests'
self notNil
true yourself

Object yourself == Object
Object class yourself = Object class

Class isClass
Object isClass
Point isClass
Smalltalk isClass

Smalltalk class isClass not
Object class isClass not
Point class isClass not
Class class isClass not

Point isMetaclass not
Point class isMetaclass
Point instanceClass = Point
Point class instanceClass = Point

Object superclass isNil
Object class superclass = Class
Object class class = Metaclass

12 isObject: 12
12 isObject: #hello
Smalltalk isObject: Smalltalk
Smalltalk isObject: Smalltalk class
#hello isObject: Point zero
Point zero isObject: #hello

self = self
self == self
nil = nil
nil == nil
1 = 1
#hello = #hello
"1 == 1
"#hello == #hello
#hel ,#lo == #hello == true  "must be true"
Object = Object
Object == Object
Object class = Object class
Object class == Object class

Point zero isClass not
Smalltalk classes notEmpty

Object notNil
Object superclass isNil
Object class notNil
Object class superclass == Class
Object new yourself notNil

Object name notNil
Object class name notNil

self running: 'test[s8] Array literals - http://alereimondo.no-ip.org/s8-media/205'
#() isArray
#() size = 0
#() isEmpty
#(1 2 3 4) size = 4
#(1 2.3 3.1 4) size = 4
#( one #two ) size = 2
#( one #two ) first isString
#( one #two ) second isString
#( one #two ) last = #two
#( 1.2 + 5 new #new new: New: Point nil true false under_scored ) size = 12
#( 1.2 + 5 new #new new: New: Point nil true false under_scored ) first isNumber
#( 1.2 + 5 new #new new: New: Point nil true false under_scored ) second isString
#( 1.2 + 5 new #new new: New: Point nil true false under_scored ) third isNumber
#( 1.2 + 5 new #new new: New: Point nil true false under_scored ) fourth isString
(#( 1.2 + 5 new #new new: New: Point nil true false under_scored ) at: 9) isNil
#( 1.2 + 5 new #new new: New: Point nil true false under_scored ) at: 10
#( 1.2 + 5 new #new new: New: Point nil true false under_scored ) last isString
#( One #(Two nil #() ) ) isArray
#( One #(Two nil #() ) ) size = 2
#( One #(Two nil #() ) ) first isString
#( One #(Two nil #() ) ) second first isString
#( One #(Two nil #() ) ) second second isNil
#( One #(Two nil #() ) ) second third isArray
#( One #(Two nil #() ) ) second third isEmpty
#( - 1 ) size = 2
#( - 1 ) = #( - 1 )
#( - 1 ) = (Array with: $- with: 1)

self running: 'test[s8] equality tests - http://alereimondo.no-ip.org/s8-media/237'
true = true
nil isNil
nil notNil = false
(1 @ 1) notNil
1 + 1 / 2 = 1 = true
1 + 1 - 1 = 2 = false
1 + 1 - 1 = #1 = false
1 + 1 - 1 = $1 = false
1 + 1 - 1 = true = false
1 - 1 = nil = false
1 - 1 = false = false
1 - 1 = (1 - 2) = false
$a = #a = true
12 = 12 = true
nil = nil = true
12 = nil = false
nil = 12 = false
1 + 1 = (8 - 6) = true
#(1 2 3) = #(3 2 1) reversed = true
true = #true = false
#12 = (10 + 2) = false
#1 = (1 + 1 - 1) = false
Array new = 0 = false
0 = #() = false
#() = #()
#(1) = #(1)
#(0) = 0 = false
0 = #(0) = false
#(#(0 1)) first first = 0 = true
#(#(0 1)) last last = 1 = true
#(98) = nil = false
#(7 nil) last = nil = true
nil = #(98) = false
nil = #(98 nil) last = true
#(98) last - 98 = 0 = true
5 @ 3 = false = false
5 @ 3 = true = false
5 @ 3 = nil = false
1 @ 1 = #hello = false
1 @ 1 = 3 = false
1 @ 1 = 1
1 @ 1 = (1@1)
1 @ 1 isKindOf: Point
(3 timesRepeat: [:i| i * i > i ]) = 3
Point zero + 1 = 1

self running: 'test[s8] IKO and responds tests - http://alereimondo.no-ip.org/s8-media/238'
5@3 isKindOf: Point
(2 isKindOf: Point) not
(5@3 isKindOf: nil) = false
"(MyUndefinedGlobal isKindOf: Point) not
"(MyUndefinedGlobal respondsTo: #yourself) not
Point respondsTo: #basicNew
(Point respondsTo: nil) not
(Point respondsTo: 12) not
(Point respondsTo: #unknown) not

(Point isKindOf: Point) = false
(Point new isKindOf: Point) = true
((Point x: 1 y: 3) isKindOf: Point) = true

self running: 'test[s8] division and reminder - http://alereimondo.no-ip.org/s8-media/273'
5 \\ 1.5 = (5 - (5 // 1.5 * 1.5))
5 \\ 7 = (5 - (5 // 7 * 7))
5 \\ 8.5 = (5 - (5 // 8.5 * 8.5))
5 \\ 2 = (5 - (5 // 2 * 2))
5 \\ -1.5 = (5 - (5 // -1.5 * -1.5))
-5 \\ 7 = (-5 - (-5 // 7 * 7))
-5 \\ 7 = (-5 - (-5 // 7 * 7))
-5 \\ 8.5 = (-5 - (-5 // 8.5 * 8.5))
5 \\ -2 = (5 - (5 // -2 * -2))
5.5 \\ 2 = (5.5 - (5.5 // 2 * 2))
5 // 2 = 2
2 // 5 = 0
5.5 // -2.2 = -2
-5.5 // -2.2 = 2
"[5 \\ 0] on: Error do: [:ex | ^true ]. ^false
"[5 // 0] on: Error do: [:ex | ^true ]. ^false

self running: 'test[s8] identity tests - http://alereimondo.no-ip.org/s8-media/392'
"1 + 1 == 2
1 + 1 - 1 == 2 = false
(1 + 1 - 1) toString = $1
1 - 1 == nil = false
1 - 1 == false = false
1 - 1 == (1 - 2) = false
[ | x | x := 5@3. x == x = true ] value
"$a == #a
"12 == 12
nil == nil
"1 + 1 == (8 - 6)
#(1 2 3) == #(3 2 1) reversed = false
true == #true = false
#12 == (10 + 2) = false
#1 == (1 + 1 - 1) = false
Array new == 0 = false
0 == Array new = false
"0 == XXXX = false
"XXXX == 0 = false
"XXXX == nil = false
#(0) == 0 = false
0 == #(0) = false
"#(#(0 1)) first first == 0
"#(#(0 1)) last last == 1
#(98) == nil = false
#(7 nil) last == nil
nil = #(98) == false
nil == #(98 nil) last = true
"#(98) last - 98 == 0

self running: 'sunit[s8] iterating - http://alereimondo.no-ip.org/s8-media/795'
((1 to: 10) collect: [:i| i ]) = #(1 2 3 4 5 6 7 8 9 10)
((10 to: 1) collect: [:i| i ]) isEmpty
((10 to: 1 by: -1) collect: [:i| i ]) = #(10 9 8 7 6 5 4 3 2 1)
((10 to: 1 by: -7) collect: [:i| i ]) = #(10 3)
(($A to: $Z) collect: [:i| i ]) = #(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)
(($A to: $Z by: 7) collect: [:i| i ]) = #(A H O V)
(($A to: $Z by: 7) + 1 collect: [:i| i ]) = #(B I P W)

self running: 'Smalltalk class tests'
Smalltalk current notNil
Smalltalk current yourself = Smalltalk current 
Smalltalk current isKindOf: Smalltalk
Smalltalk classes notEmpty
(Smalltalk @ #Point) first = Point
(Smalltalk @ #missingGlobal) isEmpty
Smalltalk @ #Point do: [:cls| ^true ]. ^false
Smalltalk @ #missingGlobal do: [:g| ^false ].^true
(Smalltalk at: #Point) = Point
(Smalltalk at: #missingGlobal) isNil
Smalltalk gc notNil
Smalltalk includesKey: #Point
Smalltalk isRunningOn: Smalltalk nativeLanguage
Smalltalk rootClasses notEmpty

self running: 'Smalltalk methods and selectors tests'
Smalltalk selectors includes: #product
"Smalltalk allMethodsDo: [:each| ^each classField = Object ]. ^false
Smalltalk allSelectors notEmpty
Smalltalk allSelectorsDo: [:each| ^each notNil ]. ^false

self running: 'Smalltalk implementors tests'
(Object implementorsOf: #yourself) notEmpty

self running: 'Smalltalk senders tests'
(Smalltalk sendersOf: #yourself) notEmpty

self running: 'Smalltalk instance tests'
(Smalltalk current @ #Point) = Point
Smalltalk current @ #(Boolean 1)
(Smalltalk current at: #Point) = Point
(Smalltalk current at: #missingGlobal ifAbsent: [ #missing ]) = #missing
Smalltalk current product = #S8
Smalltalk current buildString isString
#nil compilerSupport = Compiler
Smalltalk current deepCopy == Smalltalk current 
Smalltalk current description isKindOf: String
(Smalltalk current eval: 'return (1 + 2)') = 3
self nativeLanguage ~= #py or: [ (Smalltalk current eval: 'return smalltalk.classes()') = Smalltalk current classes ]
self nativeLanguage ~= #jl or: [ (Smalltalk current eval: 'return classes(smalltalk)') = Smalltalk current classes ]
Smalltalk current imageFileName notEmpty
Smalltalk current implementors size > 2000
Smalltalk current includesKey: #Point
(Smalltalk current includesKey: nil) = false
(Smalltalk current includesKey: #missingGlobal) = false
Smalltalk current licenseTerms isString
Smalltalk current licenseHolders isString
(Smalltalk current withState: #test do: [ Smalltalk current state ]) = #test

self running: 'Smalltalk lookup'
Smalltalk includesKey: #Object
(Smalltalk includesKey: 'absent key') not
(Smalltalk includesKey: nil) not
(Smalltalk includesKey: 12) not
(Smalltalk includesKey: #()) not

self running: 'test[s8] isObject - http://alereimondo.no-ip.org/s8-media/320'
self isObject: Point
self isObject: Point class
self isObject: Object new

self isObject: true
self isObject: false
self isObject: 12
self isObject: 0
self isObject: 1
self isObject: 1 - 1
self isObject: #()
self isObject: #(7)
self isObject: #hello
self isObject: ''
self isObject: [ #hello ]

"(self isObject: #{nil}) not
"(self isObject: nil) not
"(self isObject: nil json) not
"(self isObject: (5@3) json) not

self running: 'test[s8] isNil overwride - http://alereimondo.no-ip.org/s8-media/239'
" see test method in tests.st "
"Point new isNil
"Point removeSelector: #isNil

self running: 'test[s8] on: Error do:... - http://alereimondo.no-ip.org/s8-media/240'
[true] on: Error do: [false]
[ #broken dnu. false ] on: Exception do: [:ex| true]
[5 \\ 0. false] on: Exception do: [:ex| true ]
[5 // 0. false] on: Exception do: [:ex| true ]

self running: 'test[s8] strict arithmetic - http://alereimondo.no-ip.org/s8-media/277'
[  5 + #34. false ] on: Exception do: [:ex| true ]
[ 5 + Array new. false ] on: Exception do: [:ex| true ]
[ 5 * #( 1 2 3 ).false ] on: Exception do: [:ex| true ]
[ 5 / #(1). false ] on: Exception do: [:ex| true ]
[ 5 \\ Array new. false ] on: Exception do: [:ex| true ]

self running: 'Printing tests...'
(true toString: #hello) = #hello " Object>>#toString: "
(#hello toString: true) = #true
(#hello toString: nil) = #nil
(#hello toString: 12) = #12
"(1001 toString: 12) = #6b5 "conversion to base 12, see Number>>#toString: "
"(12 toString: 12) = #10  "conversion to base 12, see Number>>#toString: "

self running: 'inheritance & IKO'
Behavior inheritsFrom: Object
(Object inheritsFrom: Behavior) not
Object class allSuperclasses includes: Behavior
Object class inheritsFrom: Behavior

Object isKindOf: Behavior
Point isKindOf: Behavior
Point zero isKindOf: Point


self running: 'Behavior tests'
Object class class == Metaclass 
Object class superclass == Class

self running: 'Class tests'
SystemManager classVariableNames includes: #Current
[SystemManager class classVariableNames] on: Exception do: [^true]. ^false
Behavior category = #Kernel
[Behavior class category] on: Exception do: [^true]. ^false

self running: 'class side messages'
Object eventsTriggered includes: #changed
Point eventsTriggered = Object eventsTriggered
Compiler eventsTriggered includes: #enterMethod:
Compiler eventsTriggered includes: #changed
[Object class eventsTriggered] on: Exception do: [^true]. ^false

self running: 'is... Class & Metaclass'
Point isClass
Point class isClass = false
Point isMetaclass = false
Point class isMetaclass
Object isClass
Object class isClass = false
Object isMetaclass = false
Object class isMetaclass

self running: 'Class link & iko'
Object class class == Metaclass 
Object class superclass == Class
EventManager class isKindOf: Behavior
Object instanceClass == Object class instanceClass

self running: 'Class Structure tests'
EvaluableAction comment includes: #actions
EvaluableAction comment == EvaluableAction class comment
CompilerNode instVarNames includes: #end
EventManager class instVarNames includes: #eventsTriggered
SystemManager classVariableNames includes: #Current
[SystemManager class classVariableNames] on: Exception do: [^true]. ^false
Behavior category = #Kernel
[Behavior class category] on: Exception do: [^true]. ^false

self running: 'Subclasses...'
Point allSubclasses isEmpty
Collection allSubclasses includes: Array
Collection class allSubclasses includes: Array class