...

Text file src/go.starlark.net/starlark/testdata/tuple.star

Documentation: go.starlark.net/starlark/testdata

     1# Tests of Starlark 'tuple'
     2
     3load("assert.star", "assert")
     4
     5# literal
     6assert.eq((), ())
     7assert.eq((1), 1)
     8assert.eq((1,), (1,))
     9assert.ne((1), (1,))
    10assert.eq((1, 2), (1, 2))
    11assert.eq((1, 2, 3, 4, 5), (1, 2, 3, 4, 5))
    12assert.ne((1, 2, 3), (1, 2, 4))
    13
    14# truth
    15assert.true((False,))
    16assert.true((False, False))
    17assert.true(not ())
    18
    19# indexing, x[i]
    20assert.eq(("a", "b")[0], "a")
    21assert.eq(("a", "b")[1], "b")
    22
    23# slicing, x[i:j]
    24assert.eq("abcd"[0:4:1], "abcd")
    25assert.eq("abcd"[::2], "ac")
    26assert.eq("abcd"[1::2], "bd")
    27assert.eq("abcd"[4:0:-1], "dcb")
    28banana = tuple("banana".elems())
    29assert.eq(banana[7::-2], tuple("aaa".elems()))
    30assert.eq(banana[6::-2], tuple("aaa".elems()))
    31assert.eq(banana[5::-2], tuple("aaa".elems()))
    32assert.eq(banana[4::-2], tuple("nnb".elems()))
    33
    34# tuple
    35assert.eq(tuple(), ())
    36assert.eq(tuple("abc".elems()), ("a", "b", "c"))
    37assert.eq(tuple(["a", "b", "c"]), ("a", "b", "c"))
    38assert.eq(tuple([1]), (1,))
    39assert.fails(lambda: tuple(1), "got int, want iterable")
    40
    41# tuple * int,  int * tuple
    42abc = tuple("abc".elems())
    43assert.eq(abc * 0, ())
    44assert.eq(abc * -1, ())
    45assert.eq(abc * 1, abc)
    46assert.eq(abc * 3, ("a", "b", "c", "a", "b", "c", "a", "b", "c"))
    47assert.eq(0 * abc, ())
    48assert.eq(-1 * abc, ())
    49assert.eq(1 * abc, abc)
    50assert.eq(3 * abc, ("a", "b", "c", "a", "b", "c", "a", "b", "c"))
    51assert.fails(lambda: abc * (1000000 * 1000000), "repeat count 1000000000000 too large")
    52assert.fails(lambda: abc * 1000000 * 1000000, "excessive repeat \\(3000000 \\* 1000000 elements")
    53
    54# TODO(adonovan): test use of tuple as sequence
    55# (for loop, comprehension, library functions).

View as plain text