aboutsummaryrefslogblamecommitdiffstats
path: root/t/attr_test.py
blob: f9843142233d767772fc9c89af58c1a2a0b29be5 (plain) (tree)
1
2
3
4
5
6



                          

                                        







                                                   

                                        




                                                   

                                     

                              

                                        







                                                       

                                        




                                                     

                                        


                                                       

                                       







                                                                    

                                                   






                                                              

                                     



                                                



                                      

                                                         



                                      





















                                                 



                                      


                                     



                                      





                                                 



                                      









                                                 



                                      



                                                 
from . import VT100Test

class AttrTest(VT100Test):
    def test_colors(self):
        assert self.vt.fgcolor() is None
        assert self.vt.bgcolor() is None

        self.process("foo\033[31mbar")
        assert self.vt.cell(0, 0).contents() == "f"
        assert self.vt.cell(0, 0).fgcolor() is None
        assert self.vt.cell(0, 0).bgcolor() is None
        assert self.vt.cell(0, 3).contents() == "b"
        assert self.vt.cell(0, 3).fgcolor() == 1
        assert self.vt.cell(0, 3).bgcolor() is None
        assert self.vt.fgcolor() == 1
        assert self.vt.bgcolor() is None

        self.process("\033[2D\033[45mab")
        assert self.vt.cell(0, 4).contents() == "a"
        assert self.vt.cell(0, 4).fgcolor() == 1
        assert self.vt.cell(0, 4).bgcolor() == 5
        assert self.vt.fgcolor() == 1
        assert self.vt.bgcolor() == 5

        self.process("\033[m")
        assert self.vt.fgcolor() is None
        assert self.vt.bgcolor() is None

        self.process("\033[15;15Hfoo\033[31mbar\033[m")
        assert self.vt.cell(14, 14).contents() == "f"
        assert self.vt.cell(14, 14).fgcolor() is None
        assert self.vt.cell(14, 14).bgcolor() is None
        assert self.vt.cell(14, 17).contents() == "b"
        assert self.vt.cell(14, 17).fgcolor() == 1
        assert self.vt.cell(14, 17).bgcolor() is None
        assert self.vt.fgcolor() is None
        assert self.vt.bgcolor() is None

        self.process("\033[2D\033[45mab")
        assert self.vt.cell(14, 18).contents() == "a"
        assert self.vt.cell(14, 18).fgcolor() is None
        assert self.vt.cell(14, 18).bgcolor() == 5
        assert self.vt.fgcolor() is None
        assert self.vt.bgcolor() == 5

        self.process("\033[m\033[2J\033[H")
        self.process("a\033[38;5;123mb\033[48;5;158mc")
        assert self.vt.fgcolor() == 123
        assert self.vt.bgcolor() == 158
        assert self.vt.cell(0, 0).fgcolor() is None
        assert self.vt.cell(0, 0).bgcolor() is None
        assert self.vt.cell(0, 1).fgcolor() == 123
        assert self.vt.cell(0, 1).bgcolor() is None
        assert self.vt.cell(0, 2).fgcolor() == 123
        assert self.vt.cell(0, 2).bgcolor() == 158

        self.process("\033[38;2;50;75;100md\033[48;2;125;150;175me")
        assert self.vt.fgcolor() == (50, 75, 100)
        assert self.vt.bgcolor() == (125, 150, 175)
        assert self.vt.cell(0, 3).fgcolor() == (50, 75, 100)
        assert self.vt.cell(0, 3).bgcolor() == 158
        assert self.vt.cell(0, 4).fgcolor() == (50, 75, 100)
        assert self.vt.cell(0, 4).bgcolor() == (125, 150, 175)

        self.process("\033[m\033[2J\033[H")
        self.process("\033[32;47mfoo")
        assert self.vt.fgcolor() == 2
        assert self.vt.bgcolor() == 7
        assert self.vt.cell(0, 1).fgcolor() == 2
        assert self.vt.cell(0, 1).bgcolor() == 7

    def test_attrs(self):
        assert not self.vt.bold()
        assert not self.vt.italic()
        assert not self.vt.underline()
        assert not self.vt.inverse()

        self.process("f\033[1mo\033[3mo\033[4mo\033[7mo")
        assert     self.vt.bold()
        assert     self.vt.italic()
        assert     self.vt.underline()
        assert     self.vt.inverse()
        assert not self.vt.cell(0, 0).bold()
        assert not self.vt.cell(0, 0).italic()
        assert not self.vt.cell(0, 0).underline()
        assert not self.vt.cell(0, 0).inverse()
        assert     self.vt.cell(0, 1).bold()
        assert not self.vt.cell(0, 1).italic()
        assert not self.vt.cell(0, 1).underline()
        assert not self.vt.cell(0, 1).inverse()
        assert     self.vt.cell(0, 2).bold()
        assert     self.vt.cell(0, 2).italic()
        assert not self.vt.cell(0, 2).underline()
        assert not self.vt.cell(0, 2).inverse()
        assert     self.vt.cell(0, 3).bold()
        assert     self.vt.cell(0, 3).italic()
        assert     self.vt.cell(0, 3).underline()
        assert not self.vt.cell(0, 3).inverse()
        assert     self.vt.cell(0, 4).bold()
        assert     self.vt.cell(0, 4).italic()
        assert     self.vt.cell(0, 4).underline()
        assert     self.vt.cell(0, 4).inverse()

        self.process("\033[m")
        assert not self.vt.bold()
        assert not self.vt.italic()
        assert not self.vt.underline()
        assert not self.vt.inverse()

        self.process("\033[2J\033[H")
        self.process("\033[1;4mf")
        assert     self.vt.bold()
        assert not self.vt.italic()
        assert     self.vt.underline()
        assert not self.vt.inverse()
        assert     self.vt.cell(0, 0).bold()
        assert not self.vt.cell(0, 0).italic()
        assert     self.vt.cell(0, 0).underline()
        assert not self.vt.cell(0, 0).inverse()

        self.process("\033[22mo\033[24mo")
        assert not self.vt.bold()
        assert not self.vt.italic()
        assert not self.vt.underline()
        assert not self.vt.inverse()
        assert not self.vt.cell(0, 1).bold()
        assert not self.vt.cell(0, 1).italic()
        assert     self.vt.cell(0, 1).underline()
        assert not self.vt.cell(0, 1).inverse()
        assert not self.vt.cell(0, 2).bold()
        assert not self.vt.cell(0, 2).italic()
        assert not self.vt.cell(0, 2).underline()
        assert not self.vt.cell(0, 2).inverse()

        self.process("\033[1;3;4;7mo")
        assert     self.vt.bold()
        assert     self.vt.italic()
        assert     self.vt.underline()
        assert     self.vt.inverse()
        assert     self.vt.cell(0, 3).bold()
        assert     self.vt.cell(0, 3).italic()
        assert     self.vt.cell(0, 3).underline()
        assert     self.vt.cell(0, 3).inverse()