예제 #1
0
    def test_select_union_notin(self):
        fLOG(
            __file__,
            self._testMethodName,
            OutputPrint=__name__ == "__main__")

        le = [{"nom": "j", "age": 10, "gender": "M"},
              {"nom": "jean", "age": 40, "gender": "M"},
              {"nom": "jeanne", "age": 2, "gender": "F"}]
        tbl = IterRow(None, le)

        le = [{"nom": "j", "newage": 10, "gender": "M"},
              {"nom": "jean", "newage": 40, "gender": "M"},
              {"nom": "jeanne", "newage": 2, "gender": "F"}]
        tbl2 = IterRow(None, le)

        iter = tbl.unionall(tbl2, merge_schema=True)
        res = list(iter)

        exp = [{'gender': 'M', 'nom': 'j', 'newage': 'NA()', 'age': 10},
               {'gender': 'M', 'nom': 'jean', 'newage': 'NA()', 'age': 40},
               {'gender': 'F', 'nom': 'jeanne', 'newage': 'NA()', 'age': 2},
               {'gender': 'F', 'nom': 'jeanne', 'newage': 10, 'age': 'NA()'},
               {'gender': 'F', 'nom': 'jeanne', 'newage': 40, 'age': 'NA()'},
               {'gender': 'F', 'nom': 'jeanne', 'newage': 2, 'age': 'NA()'}]

        def repl(d):
            return {k: repla(v) for k, v in d.items()}

        def repla(v):
            if isinstance(v, NA):
                return 'NA()'
            else:
                return v
        res = [repl(r) for r in res]

        if res != exp:
            raise ValueError(str(res))
예제 #2
0
    def test_select_union(self):
        fLOG(
            __file__,
            self._testMethodName,
            OutputPrint=__name__ == "__main__")

        lr = [{"nom": "j", "age": 10, "gender": "M"},
              {"nom": "jean", "age": 40, "gender": "M"},
              {"nom": "jeanne", "age": 2, "gender": "F"}]
        tbl = IterRow(None, lr)

        iter = tbl.unionall(tbl)
        res = list(iter)

        exp = [{"nom": "j", "age": 10, "gender": "M"},
               {"nom": "jean", "age": 40, "gender": "M"},
               {"nom": "jeanne", "age": 2, "gender": "F"},
               {"nom": "j", "age": 10, "gender": "M"},
               {"nom": "jean", "age": 40, "gender": "M"},
               {"nom": "jeanne", "age": 2, "gender": "F"},
               ]

        if res != exp:
            raise ValueError(str(res))