1TraitsTest := UnitTest clone do(
2  setUp := method(
3    super(setUp)
4    self A := Object clone do(foo := 42)
5  )
6
7  testNoConflicts := method(
8    B := Object clone
9    B addTrait(A)
10    assertEquals(42, B foo)
11  )
12
13  testConflict := method(
14    B := Object clone do(foo := 23)
15    assertRaisesException(B addTrait(A))
16  )
17
18  testConflictRename := method(
19    B := Object clone do(foo := 23)
20    B addTrait(A, Map clone atPut("foo", "fooFromA"))
21    assertEquals(42, B fooFromA)
22    assertEquals(23, B foo)
23  )
24
25  testMissingArguments := method(
26    assertRaisesException(A addTrait)
27  )
28)
29