| """Test the SBStringList API.""" |
| |
| from typing import List |
| |
| import lldb |
| from lldbsuite.test.lldbtest import * |
| |
| |
| def make_list(items: List[str]): |
| slist = lldb.SBStringList() |
| for item in items: |
| slist.AppendString(item) |
| return slist |
| |
| |
| class SBStringListAPICase(TestBase): |
| NO_DEBUG_INFO_TESTCASE = True |
| |
| def test_repr(self): |
| # Empty list. |
| strings = lldb.SBStringList() |
| self.assertEqual(repr(strings), "[]") |
| |
| strings = make_list(["foo"]) |
| self.assertEqual(repr(strings), "['foo']") |
| |
| strings = make_list(["foo", "bar", "baz"]) |
| self.assertEqual(repr(strings), "['foo', 'bar', 'baz']") |
| |
| def test_getitem_positive_index(self): |
| strings = make_list(["foo", "bar", "baz"]) |
| self.assertEqual(strings[0], "foo") |
| self.assertEqual(strings[1], "bar") |
| self.assertEqual(strings[2], "baz") |
| |
| # Negative index |
| self.assertEqual(strings[-1], "baz") |
| self.assertEqual(strings[-2], "bar") |
| self.assertEqual(strings[-3], "foo") |
| |
| # Out of range. |
| with self.assertRaises(IndexError): |
| strings[4] |
| with self.assertRaises(IndexError): |
| strings[100] |
| |
| def test_getitem_wrong_type(self): |
| strings = make_list(["foo", "bar"]) |
| with self.assertRaises(TypeError): |
| strings["not-an-index"] |
| with self.assertRaises(TypeError): |
| strings[1.5] |
| |
| def test_getitem_slice(self): |
| strings = make_list(["a", "b", "c", "d", "e"]) |
| self.assertEqual(strings[1:4], ["b", "c", "d"]) |
| |
| # Copy. |
| items = ["a", "b", "c"] |
| strings = make_list(items) |
| self.assertEqual(strings[:], items) |
| |
| # Stepping. |
| strings = make_list(["a", "b", "c", "d", "e"]) |
| self.assertEqual(strings[::2], ["a", "c", "e"]) |
| self.assertEqual(strings[1::2], ["b", "d"]) |
| |
| self.assertEqual(strings[-3:], ["c", "d", "e"]) |
| self.assertEqual(strings[::-1], ["e", "d", "c", "b", "a"]) |
| |
| # Out of range slice. |
| strings = make_list(["a", "b", "c"]) |
| self.assertEqual(strings[10:20], []) |
| self.assertEqual(lldb.SBStringList()[:], []) |