initial checkin
authorClaus Gittinger <cg@exept.de>
Tue, 24 Jan 2006 12:07:21 +0100
changeset 298 0511624b097a
parent 297 bfb9ea5cbb19
child 299 939b35dca5d0
initial checkin
RegressionTests__BecomeTests.st
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RegressionTests__BecomeTests.st	Tue Jan 24 12:07:21 2006 +0100
@@ -0,0 +1,179 @@
+"{ Package: 'exept:regression' }"
+
+"{ NameSpace: RegressionTests }"
+
+TestCase subclass:#BecomeTests
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'tests-Regression'
+!
+
+
+!BecomeTests methodsFor:'tests'!
+
+testBecome
+    "Test the two way become. Note. we cannot use string literals for this test"
+
+    | a b c d |
+
+    a := 'ab' copy.
+    b := 'cd' copy.
+    c := a.
+    d := b.
+
+    a become: b.
+
+    self 
+        assert: a = 'cd';
+        assert: b = 'ab';
+        assert: c = 'cd';
+        assert: d = 'ab'.
+
+
+    "
+     self new testBecome
+    "
+!
+
+testBecomeForward
+    "Test the forward become."
+
+    | a b c d |
+
+    a := 'ab' copy.
+    b := 'cd' copy.
+    c := a.
+    d := b.
+
+    a becomeForward: b.
+
+    self 
+        assert: a = 'cd';
+        assert: b = 'cd';
+        assert: c = 'cd';
+        assert: d = 'cd'.
+
+
+    "
+     self new testBecomeForward
+    "
+!
+
+testBecomeForwardDontCopyIdentityHash
+    "Check that
+        1. the argument to becomeForward: is NOT modified to have the receiver's identity hash.
+        2. the receiver's identity hash is unchanged."
+
+    | a b hb |
+
+    a := 'ab' copy.
+    b := 'cd' copy.
+    hb := b identityHash.
+
+    a becomeForward: b copyHash: false.
+
+    self 
+        assert: a identityHash = hb;
+        assert: b identityHash = hb.
+
+    "
+     self new testBecomeForwardDontCopyIdentityHash
+    "
+!
+
+testBecomeForwardHash
+    | a b c hb |
+
+    a := 'ab' copy.
+    b := 'cd' copy.
+    c := a.
+    hb := b hash.
+
+    a becomeForward: b.
+
+    self 
+        assert: a hash = hb;
+        assert: b hash = hb;
+        assert: c hash = hb.
+
+    "
+     self new testBecomeForwardHash
+    "
+!
+
+testBecomeForwardIdentityHash
+    "Check that
+            1. the argument to becomeForward: is modified to have the receiver's identity hash.
+            2. the receiver's identity hash is unchanged."
+
+    | a b ha |
+
+    a := 'ab' copy.
+    b := 'cd' copy.
+    ha := a identityHash.
+
+    a becomeForward: b.
+
+    self 
+        assert: a identityHash = ha;
+        assert: b identityHash = ha.
+
+
+    "
+     self new testBecomeForwardIdentityHash
+    "
+!
+
+testBecomeHash
+
+    | a b c d ha hb |
+
+    a := 'ab' copy.
+    b := 'cd' copy.
+    c := a.
+    d := b.
+    ha := a hash.
+    hb := b hash.
+
+    a become: b.
+
+    self 
+        assert: a hash = hb;
+        assert: b hash = ha;
+        assert: c hash = hb;
+        assert: d hash = ha.
+
+
+    "
+     self new testBecomeHash
+    "
+!
+
+testBecomeIdentityHash
+    "Note. The identity hash of both objects seems to change after the become:"
+
+    | a b c d |
+
+    a := 'ab' copy.
+    b := 'cd' copy.
+    c := a.
+    d := b.
+
+    a become: b.
+
+    self 
+        assert: a identityHash = c identityHash;
+        assert: b identityHash = d identityHash;
+        deny: a identityHash = b identityHash.
+
+    "
+     self new testBecomeIdentityHash
+    "
+! !
+
+!BecomeTests class methodsFor:'documentation'!
+
+version
+    ^ '$Header$'
+! !