1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
project('plusassign')
x = []
x += 'a'
if x.length() != 1
error('Incorrect append')
endif
if x[0] != 'a'
error('Incorrect append 2.')
endif
y = x
x += 'b'
if y.length() != 1
error('Immutability broken.')
endif
if y[0] != 'a'
error('Immutability broken 2.')
endif
if x.length() != 2
error('Incorrect append 3')
endif
if x[0] != 'a'
error('Incorrect append 4.')
endif
if x[1] != 'b'
error('Incorrect append 5.')
endif
# Now with evil added: append yourself.
x += x
if x.length() != 4
error('Incorrect selfappend.')
endif
# += on strings
bra = 'bra'
foo = 'A'
foo += bra
foo += 'cada'
foo += bra
assert (foo == 'Abracadabra', 'string += failure [@0@]'.format(foo))
assert (bra == 'bra', 'string += modified right argument!')
foo += ' ' + foo
assert (foo == 'Abracadabra Abracadabra', 'string += failure [@0@]'.format(foo))
# += on ints
foo = 5
foo += 6
assert (foo == 11, 'int += failure [@0@]'.format(foo))
bar = 99
foo += bar
assert (foo == 110, 'int += failure [@0@]'.format(foo))
assert (bar == 99, 'int += modified right argument"')
bar += foo + 1
assert (bar == 210, 'int += failure [@0@]'.format(bar))
assert (foo == 110, 'int += modified right argument"')
|