#!/usr/bin/env python3
""" Module proposant la classe CodeBinaire et l'énuméré Bit """

from code_binaire import Bit, CodeBinaire

def main():
    """Tests unitaires du module"""
    def ok_ko_en_str(booleen):
        return "OK" if booleen else "KO"

    def ok_ko(fct, resultat_attendu, *param):
        """mini fonction de TU"""
        res = fct.__name__ + ' : '
        res = res + ok_ko_en_str(fct(*param) == resultat_attendu)
        print(res)

    c = CodeBinaire(Bit.BIT_0, Bit.BIT_1)
    d = CodeBinaire(Bit.BIT_0, Bit.BIT_1)
    e = CodeBinaire(Bit.BIT_1, Bit.BIT_0, Bit.BIT_1)

    ok_ko(repr, 'CodeBinaire(Bit.BIT_0, Bit.BIT_1)', c)

    c.ajouter(Bit.BIT_0)
    ok_ko(repr, 'CodeBinaire(Bit.BIT_0, Bit.BIT_1, Bit.BIT_0)', c)

    ok_ko(str, '010', c)

    
    ok_ko(len, 3, c)

    ok_ko(CodeBinaire.__getitem__, CodeBinaire(Bit.BIT_1, Bit.BIT_0), c, slice(1,3))

    ok_ko(CodeBinaire.__getitem__, Bit.BIT_0, c, 0)

    ok_ko(CodeBinaire.__add__, CodeBinaire(Bit.BIT_0, Bit.BIT_1, Bit.BIT_1, Bit.BIT_0, Bit.BIT_1), d, e)

    e[1:2]=[Bit.BIT_1, Bit.BIT_1, Bit.BIT_0]
    ok_ko(CodeBinaire.__eq__, True, CodeBinaire(Bit.BIT_1, Bit.BIT_1, Bit.BIT_1, Bit.BIT_0, Bit.BIT_1), e)
    e[1]=Bit.BIT_0
    ok_ko(CodeBinaire.__eq__, True, CodeBinaire(Bit.BIT_1, Bit.BIT_0, Bit.BIT_1, Bit.BIT_0, Bit.BIT_1), e)

    for b in e:
        print(b)

    print(e)

    print(d == CodeBinaire(Bit.BIT_0, Bit.BIT_1))

if __name__ == "__main__":
    main()
