Beispiel #1
0
    def test_table_load_csv(self):
        table = Table.load_csv("col1,col2,col3\n1,2,3\n4,5,6", {"col1": lambda v: int(v)})

        self.assertEqual(table.header(), ["col1", "col2", "col3"])
        self.assertEqual(table.rows(), [[1, "2", "3"], [4, "5", "6"]])

        table = Table.load_csv("col1,col2,col1,col1\n1,2,3,4", rename_strategy=INDEXING)
        self.assertEqual(table.header(), ["col1_0", "col2", "col1_1", "col1_2"])
Beispiel #2
0
    def test_table_equality(self):
        table_a = Table.load_csv("col1,col2,col3\n1,2,3\n4,5,6")
        table_b = Table.load_csv("col1,col2,col3\n1,2,3\n4,5,6")
        table_c = Table.load_csv("col1,col2,col3\n1,2,3\n4,5,7")
        table_d = Table.load_csv("col1,col2,col3,\n1,2,3,\n4,5,6,")

        self.assertEqual(table_a, table_b)
        self.assertNotEqual(table_a, table_c)
        self.assertNotEqual(table_a, table_d)
Beispiel #3
0
    def test_table_join(self):
        table_a = Table.load_csv("id,name\n1,alice\n2,bob\n3,eve")
        table_b = Table.load_csv("fid,spirit\n1,virtuous\n1,delightful\n3,evil\n0,moot")
        joined = table_a.join("id", table_b, "fid")

        self.assertEqual(joined.header(), ["id", "name", "fid", "spirit"])
        self.assertEqual(
            joined.sort("spirit").rows(),
            [["1", "alice", "1", "delightful"], ["3", "eve", "3", "evil"], ["1", "alice", "1", "virtuous"]],
        )
Beispiel #4
0
    def test_table_refine(self):
        table = Table.load_csv("col1,col2,col3\n1,2,3\n4,5,6")
        expected = Table.load_csv("col1,col2,col3\n1,2,3")

        refined = table.refine("col1", lambda v: v == "1")
        self.assertEqual(refined, expected)

        refined = table.refine("col1", "1")
        self.assertEqual(refined, expected)

        refined = table.refine(refinements={"col1": lambda v: v == "1"})
        self.assertEqual(refined, expected)

        refined = table.refine(refinements={"col1": "1"})
        self.assertEqual(refined, expected)
Beispiel #5
0
    def test_table_convert(self):
        table = Table.load_csv("col1,col2,col3\n1,2,3\n4,5,6")

        converted = table.convert("col1", lambda v: int(v))
        self.assertEqual(converted.rows(), [[1, "2", "3"], [4, "5", "6"]])

        converted = table.convert(conversions={"col1": lambda v: int(v)})
        self.assertEqual(converted.rows(), [[1, "2", "3"], [4, "5", "6"]])
Beispiel #6
0
    def test_table_rows(self):
        table = Table.load_csv("col1,col2,col3\n1,2,3\n4,5,6")
        self.assertEqual(table.rows(["col1", "col2"]), [["1", "2"], ["4", "5"]])
        self.assertEqual(table.rows(["col3", "col2"]), [["3", "2"], ["6", "5"]])
        self.assertEqual(table.rows(["col3"]), [["3"], ["6"]])
        self.assertEqual(table.rows([]), [])

        self.assertEqual(table.rows(["col1", "col2"], 1), [["1", "2"]])
Beispiel #7
0
    def test_table_sort(self):
        table = Table.load_csv("col1,col2,col3\n1,2,3\n4,1,6")

        sortd = table.sort("col1")
        self.assertEqual(sortd.rows(), [["1", "2", "3"], ["4", "1", "6"]])
        sortd = table.sort("col1", reverse=True)
        self.assertEqual(sortd.rows(), [["4", "1", "6"], ["1", "2", "3"]])

        sortd = table.sort("col2")
        self.assertEqual(sortd.rows(), [["4", "1", "6"], ["1", "2", "3"]])
        sortd = table.sort("col2", reverse=True)
        self.assertEqual(sortd.rows(), [["1", "2", "3"], ["4", "1", "6"]])

        table = Table(["col"], [["2"], ["1"], [None]])
        sortd = table.sort("col")
        self.assertEqual(sortd.rows(), [[None], ["1"], ["2"]])
        sortd = table.sort("col", reverse=True)
        self.assertEqual(sortd.rows(), [["2"], ["1"], [None]])
Beispiel #8
0
    def test_table_narrow(self):
        table = Table.load_csv("col1,col2,col3\n1,2,3\n4,5,6\n4,5,7")
        self.assertEqual(table.narrow(["col1", "col2"]).rows(), [["1", "2"], ["4", "5"], ["4", "5"]])
        self.assertEqual(table.narrow(["col1", "col2"], unique=True).rows(), [["1", "2"], ["4", "5"]])
        self.assertEqual(table.narrow(["col3", "col2"]).rows(), [["3", "2"], ["6", "5"], ["7", "5"]])
        self.assertEqual(table.narrow(["col3"]).rows(), [["3"], ["6"], ["7"]])
        self.assertEqual(table.narrow([]).rows(), [])

        self.assertEqual(table.narrow(["col1", "col2"]).rows(), [["1", "2"], ["4", "5"], ["4", "5"]])
Beispiel #9
0
    def test_table_column(self):
        table = Table.load_csv("col1,col2,col3\n1,2,3\n4,5,6")
        self.assertEqual(table.column("col1"), ["1", "4"])
        self.assertEqual(table.column("col2"), ["2", "5"])
        self.assertEqual(table.column("col3"), ["3", "6"])

        self.assertEqual(table.column("col1", 0), [])
        self.assertEqual(table.column("col1", 1), ["1"])
        self.assertEqual(table.column("col1", 2), ["1", "4"])
        self.assertEqual(table.column("col1", 3), ["1", "4"])
Beispiel #10
0
    def test_table_extend(self):
        table = Table.load_csv("col1,col2,col3\n1,2,3\n4,5,6")

        extended = table.extend(["col1"], lambda v: int(v), "col4")
        self.assertEqual(extended.header(), ["col1", "col2", "col3", "col4"])
        self.assertEqual(extended.rows(), [["1", "2", "3", 1], ["4", "5", "6", 4]])

        extended = table.extend(
            extensions=[
                {"names": ["col1"], "func": lambda v: -1, "target": "col6"},
                {"names": ["col1"], "func": lambda v: int(v), "target": "col5"},
                {"names": ["col2", "col1", "col3"], "func": lambda a, b, c: a + b + c, "target": "col4"},
                {"names": [], "func": lambda: "abc", "target": "dude"},
            ]
        )
        self.assertEqual(extended.header(), ["col1", "col2", "col3", "col6", "col5", "col4", "dude"])
        self.assertEqual(extended.rows(), [["1", "2", "3", -1, 1, "213", "abc"], ["4", "5", "6", -1, 4, "546", "abc"]])
Beispiel #11
0
    def test_table(self):
        table = Table([], [])
        self.assertEqual(table.header(), [])
        self.assertEqual(table.rows(), [])
        self.assertEqual(table.width(), 0)
        self.assertEqual(table.height(), 0)
        self.assertEqual(table.draw(), "")

        table = Table(["col1", "col2", "col3"], [["1", "2", 3], [4, "5", "6"]])
        self.assertEqual(table.header(), ["col1", "col2", "col3"])
        # Make sure it is immutable
        h = table.header()
        h += ["header"]
        self.assertEqual(table.header(), ["col1", "col2", "col3"])
        self.assertEqual(table.rows(), [["1", "2", 3], [4, "5", "6"]])
        # Make sure it is immutable
        r = table.rows()
        r += [["abc", "x", "y"]]
        self.assertEqual(table.rows(), [["1", "2", 3], [4, "5", "6"]])
        # Make sure the inner row is immutable
        r = table.rows()
        r[0] += ["abc"]
        self.assertEqual(table.rows(), [["1", "2", 3], [4, "5", "6"]])
        self.assertEqual(table.width(), 3)
        self.assertEqual(table.height(), 2)
        self.assertEqual(table.draw(), "col1|col2|col3\n1   |2   |3   \n4   |5   |6   ")

        table = Table(["col1", "col2", "col3"], [["1", "2asdf", 3], [4, "5", "6"]])
        self.assertEqual(table.draw(), "col1|col2|col3\n1   |2asd|3   \n4   |5   |6   ")
        self.assertEqual(table.draw(["col1", "col2", "col3"]), "col1|col2|col3\n1   |2asd|3   \n4   |5   |6   ")
        self.assertEqual(table.draw(["col1", "col3"]), "col1|col3\n1   |3   \n4   |6   ")
        self.assertEqual(table.draw(["col3", "col1"]), "col3|col1\n3   |1   \n6   |4   ")
        self.assertEqual(table.draw(["col3"]), "col3\n3   \n6   ")
        self.assertEqual(table.draw([]), "")
Beispiel #12
0
    def test_table_merge(self):
        table_1 = Table.load_csv("col1,col2,col3\n1,2,3\n4,5,6", {"col1": lambda v: int(v)})
        table_2 = Table.load_csv("col1,col2,col3\n7,8,9\n10,11,12")
        table = table_1.merge(table_2)

        self.assertEqual(table.rows(), [[1, "2", "3"], [4, "5", "6"], ["7", "8", "9"], ["10", "11", "12"]])