Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- | T U MAXINT |
- T:=Transcript clear.
- i:=0.
- pn := [ :s | i:=i+1. Transcript show: i; show: ': '; show: s ].
- p := [ :s | pn value: s. Transcript cr. ].
- p3 := [ :s1 :s2 :s3 |
- pn value: s1.
- Transcript show: ' + '; show: s2; show: ' = '; show: s3; cr.
- ].
- U := UnlimitedInteger.
- Digit base: 10.
- "assuming class method setter named 'base' "
- x := U new.
- self assert: x digits size = 0.
- p value: x.
- y := U new addMSD: 0.
- self assert: y digits size = 1.
- p value: y.
- y := U new addLSD: 0.
- self assert: y digits size = 1.
- p value: y.
- y := U new setFrom: 0.
- self assert: y digits size = 1.
- p value: y.
- y addMSD: 0.
- y addLSD: 0.
- self assert: y digits size = 3.
- p value: y.
- y addMSD: 1.
- self assert: y digits size = 4.
- "the first that is not 0[base]"
- p value: y.
- y := U new setFrom: 0.
- self assert: (x add: y) digits size = 1.
- self assert: (y add: x) digits size = 1.
- self assert: (x add: x) digits size = 1.
- self assert: (y add: y) digits size = 1.
- p value: (x add: y).
- p value: (y add: x).
- p value: (x add: x).
- p value: (y add: y).
- Transcript show: 'Random testing: each couple of rows should be equal'; cr.
- MAXINT := 100000.
- "check setFrom: "
- 10 timesRepeat: [
- Digit base: (Random new nextInt: 9) + 1.
- r := Random new nextInt: MAXINT.
- p value: (r radix: Digit base), '[', Digit base, ']'.
- p value: (U new setFrom: r).
- Transcript cr.
- ].
- "check add "
- 10 timesRepeat: [
- Digit base: (Random new nextInt: 9) + 1.
- suff := '[', Digit base, ']'.
- r1 := Random new nextInt: MAXINT.
- r2 := Random new nextInt: MAXINT.
- res := r1 + r2.
- ur1 := U new setFrom: r1.
- ur2 := U new setFrom: r2.
- p3 value: (r1 radix: Digit base), suff
- value: (r2 radix: Digit base), suff
- value: (res radix: Digit base), suff.
- p3 value: ur1 value: ur2 value: (ur1 add: ur2).
- p3 value: (r2 radix: Digit base), suff
- value: (r1 radix: Digit base), suff
- value: (res radix: Digit base), suff.
- p3 value: ur2 value: ur1 value: (ur2 add: ur1).
- Transcript cr.
- ].
- Transcript show: 'End random testing.'; cr; cr.
- Transcript show: 'Comparison testing:'.
- x := U new.
- y := U new setFrom: 0.
- y0 := U new setFrom: 0; addMSD: 0.
- self assert: (x compareTo: x).
- self assert: (x compareTo: y) not.
- self assert: (y compareTo: y).
- self assert: (y compareTo: y0) not.
- self assert: (y compareTo: x) not.
- 10 timesRepeat: [
- Digit base: (Random new nextInt: 9) + 1.
- r := (Random new nextInt: MAXINT) radix: Digit base.
- ur1 := U new.
- ur2 := U new.
- r shuffle do: [ :d | ur1 addMSD: d asInteger ].
- r shuffle do: [ :d | ur2 addMSD: d asInteger ].
- self assert: (ur1 compareTo: ur2).
- self assert: (ur2 compareTo: ur1).
- ].
- Transcript show: ' pass:'; cr.
- Transcript show: 'Iterator testing:'.
- 10 timesRepeat: [
- Digit base: (Random new nextInt: 9) + 1.
- ur1 := U new.
- num := (Random new nextInt: 100).
- num timesRepeat:
- [ ur1 addMSD: (Random new nextInt: Digit base) - 1 ].
- it1 := ur1 iterator.
- it2 := ur1 iterator.
- (num+1) timesRepeat: [
- ur1 addMSD: 1.
- ur1 addLSD: 1.
- ur1 iterator.
- ur1 setFrom: (Random new nextInt: 100).
- self assert: it1 value value = it2 value value.
- ].
- self assert: it1 value = nil.
- ].
- Transcript show: ' pass:'; cr.
- Transcript show: 'Anagrams testing:'.
- 10 timesRepeat: [ | x num a b |
- Digit base: (Random new nextInt: 9) + 1.
- num := Random new nextInt: 100.
- x := U new.
- 100 timesRepeat: [ x addMSD: (Random new nextInt: Digit base) - 1 ].
- b := Array new: num.
- 1 to: num do: [ :j | b at: j put: x digits asArray shuffle ].
- a := Anagrams new.
- b do: [ :t |
- u := U new.
- t do: [ :k | u addMSD: k value ].
- a add: u
- ].
- self assert: (a count: x) = num.
- ].
- Transcript show: ' pass:'; cr.
Add Comment
Please, Sign In to add comment