Message extend [
    = anObject [
        <category: 'testing'>

        ^ self class == anObject class and: [ self selector = anObject
selector and: [ self arguments = anObject arguments ] ]
    ]
]

DirectedMessage extend [
    = anObject [
        <category: 'testing'>

        ^ super = anObject and: [ self receiver = anObject receiver ]
    ]
]

Eval [

    | o1 m1 m2 |
    m1 := Message selector: #'a:b:c:' argument: #(1 2 3).
    m2 := Message selector: #'a:b:c:' argument: #(1 2 3).

    m1 = m2 ifFalse: [ self error: 'm1 should be equal to m2' ].

    m2 := Message selector: #'a:b:c:' argument: #(2 3 4).
    m1 = m2 ifTrue: [ self error: 'm1 should be different of m2' ].

    o1 := Object new.

    m1 := DirectedMessage receiver: 01 selector: #'a:b:c:' argument: #(1 2 3).
    m2 := DirectedMessage receiver: 01 selector: #'a:b:c:' argument: #(1 2 3).

    m1 = m2 ifFalse: [ self error: 'm1 should be equal to m2' ].

    m2 := DirectedMessage receiver: Object new selector: #'a:b:c:'
argument: #(1 2 3).
    m1 = m2 ifTrue: [ self error: 'm1 should be different of m2' ].
]

_______________________________________________
help-smalltalk mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-smalltalk

Reply via email to