Esempio n. 1
0
class TestReadMultipleSheets:
    def setUp(self):
        self.file_type = "csv"
        self.test_file_formatter = "csv_multiple__%s__%s." + self.file_type
        self.data = [
            ["1", "2", "3"],
            ["4", "5", "6"],
            ["7", "8", "9"]
        ]
        self.sheets = OrderedDict()
        self.sheets.update({"sheet1": self.data})
        self.sheets.update({"sheet2": self.data})
        self.sheets.update({"sheet3": self.data})
        index = 0
        for key, value in self.sheets.items():
            file_name = self.test_file_formatter % (key, index)
            with open(file_name, 'w') as f:
                for row in value:
                    f.write(",".join(row) + "\n")
            index = index + 1

    def test_multiple_sheet(self):
        b = CSVBook("csv_multiple.csv")
        sheets = b.sheets()
        assert sheets == self.sheets

    def test_read_one_from_many_by_name(self):
        b = CSVBook("csv_multiple.csv", load_sheet_with_name="sheet1")
        sheets = b.sheets()
        assert sheets["sheet1"] == self.sheets["sheet1"]

    @raises(ValueError)
    def test_read_one_from_many_by_non_existent_name(self):
        CSVBook("csv_multiple.csv", load_sheet_with_name="notknown")

    def test_read_one_from_many_by_index(self):
        b = CSVBook("csv_multiple.csv", load_sheet_at_index=1)
        sheets = b.sheets()
        assert sheets["sheet2"] == self.sheets["sheet2"]

    @raises(IndexError)
    def test_read_one_from_many_by_wrong_index(self):
        CSVBook("csv_multiple.csv", load_sheet_at_index=90)
        
    def tearDown(self):
        index = 0
        for key, value in self.sheets.items():
            file_name = self.test_file_formatter % (key, index)
            os.unlink(file_name)
            index = index + 1
Esempio n. 2
0
class TestWriteMultipleSheets:
    def setUp(self):
        self.file_type = "csv"
        self.test_file_formatter = "csv_multiple__%s__%s." + self.file_type
        self.data1 = [
            ["1", "2", "3"],
            ["4", "5", "6"],
            ["7", "8", "9"]
        ]
        self.data2 = [
            ["1", "2", "3"],
            ["4", "5", "6"],
            ["7", "8", "1000"]
        ]
        self.data3 = [
            ["1", "2", "3"],
            ["4", "5", "6888"],
            ["7", "8", "9"]
        ]
        self.sheets = OrderedDict()
        self.sheets.update({"sheet1": self.data1})
        self.sheets.update({"sheet2": self.data2})
        self.sheets.update({"sheet3": self.data3})
        self.result_dict = OrderedDict()        
        self.result1 = dedent("""
           1,2,3
           4,5,6
           7,8,9
        """).strip('\n')
        self.result2 = dedent("""
           1,2,3
           4,5,6
           7,8,1000
        """).strip('\n')
        self.result3 = dedent("""
           1,2,3
           4,5,6888
           7,8,9
        """).strip('\n')
        self.result_dict.update({"sheet1": self.result1})
        self.result_dict.update({"sheet2": self.result2})
        self.result_dict.update({"sheet3": self.result3})

    def test_multiple_sheet(self):
        """Write csv book into multiple file"""
        b = CSVWriter("csv_multiple.csv")
        for key, value in self.sheets.items():
            w = b.create_sheet(key)
            w.write_array(value)
            w.close()
        b.close()
        index = 0
        for key, value in self.sheets.items():
            file_name = self.test_file_formatter % (key, index)
            with open(file_name, 'r') as f:
                content = f.read().replace('\r', '')
                assert content.strip('\n') == self.result_dict[key]
            index = index + 1

    #def test_multiple_sheet_into_memory(self):
    #    """Write csv book into a single stream"""
    #    io = get_io(self.file_type)
    #    b = CSVWriter(io)
    #    for key, value in self.sheets.items():
    #        w = b.create_sheet(key)
    #        w.write_array(value)
    #        w.close()
    #    b.close()
    #    content = io.getvalue()    
    #    index = 0
    #    for key, value in self.content.split('---pyexcel---\r\n'):
    #        file_name = self.test_file_formatter % (key, index)
    #        with open(file_name, 'r') as f:
    #            content = f.read().replace('\r', '')
    #            assert content.strip('\n') == self.result_dict[key]
    #        index = index + 1

    def tearDown(self):
        index = 0
        for key, value in self.sheets.items():
            file_name = self.test_file_formatter % (key, index)
            os.unlink(file_name)
            index = index + 1