Skip to content
Snippets Groups Projects
Select Git revision
  • cb97e66eb539d096c6be8c80a8a6df87f8fd52d9
  • main default protected
  • develop
  • feature2RafehDaniel
  • feature2YildirimHatice
  • feature2GotsisWasilios
  • feature2BerishaAlma
  • featureAliciMuhamed_
  • featureYildirimHatice
  • featuretestAliciMuhamed
  • featureAliciMuhamed
  • featureRafehDaniel
  • featureWasiliosGotsis
  • featureBerishaAlma
14 results

test_converter

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    test_converter 3.72 KiB
    # Bei Eingabe der Zahl 1 soll "I" ausgegeben werden
    # Bei Eingabe der Zahl 4 soll "IV" ausgegeben werden
    # Bei Eingabe der Zahl 21 soll "XXI" ausgegeben werden
    # Bei Eingabe der Zahl 1000 soll "M" ausgegeben werden
    # Bei Eingabe der Zahl 0 soll "Es gibt keine römische Null" ausgegeben werden
    # Bei Eingabe eines Float-Werts (z.B. 4.3) soll "Bitte ganze Zahlen eingeben" ausgegeben werden
    # Bei Eingabe eines negativen Werts (z.B. -5) soll "Es sind nur positive Zahlen zum konvertieren erlaubt" ausgegeben werden
    # Bei Eingabe mehrerer Zahlen wie z.B. "4,3" soll "Bitte nur eine ganze Zahl eingeben" ausgegeben werden
    
    
    import unittest
    from abc import ABC, abstractmethod
    from other.RafehDaniel.converter import Converter as Dani
    
    
    # Interface (abstrakte Basisklasse)
    class IConverter(ABC):
        @abstractmethod
        def convert(self, input):
            pass
    
    # Konkrete Implementierung des Interfaces
    class RomanConverter(IConverter):
        def convert(self, input):
            # Bei Eingabe mehrerer Zahlen wie "4,3"
            if isinstance(input, str) and "," in input:
                return "Bitte nur eine ganze Zahl eingeben"
    
            # Typprüfung und Fehlerbehandlung
            try:
                if isinstance(input, float):
                    return "Bitte ganze Zahlen eingeben"
                if isinstance(input, str):
                    if not input.isdigit():
                        return "Bitte ganze Zahlen eingeben"
                    input = int(input)
                number = int(input)
            except (ValueError, TypeError):
                return "Bitte ganze Zahlen eingeben"
    
            if number == 0:
                return "Es gibt keine römische Null"
            if number < 0:
                return "Es sind nur positive Zahlen zum konvertieren erlaubt"
    
            roman_numerals = [
                (1000, 'M'), (900, 'CM'), (500, 'D'), (400, 'CD'),
                (100, 'C'), (90, 'XC'), (50, 'L'), (40, 'XL'),
                (10, 'X'), (9, 'IX'), (5, 'V'), (4, 'IV'), (1, 'I')
            ]
    
            result = ""
            for value, symbol in roman_numerals:
                while number >= value:
                    result += symbol
                    number -= value
            return result
    
    # Testklasse mit 8 funktionierenden Tests
    class TestRomanConverter(unittest.TestCase):
        def setUp(self):
            self.converter = Dani()
    
        # Bei Eingabe der Zahl 1 soll "I" ausgegeben werden
        def test_1(self):
            self.assertEqual(self.converter.convert(1), "I")
    
        # Bei Eingabe der Zahl 4 soll "IV" ausgegeben werden
        def test_4(self):
            self.assertEqual(self.converter.convert(4), "IV")
    
        # Bei Eingabe der Zahl 21 soll "XXI" ausgegeben werden
        def test_21(self):
            self.assertEqual(self.converter.convert(21), "XXI")
    
        # Bei Eingabe der Zahl 1000 soll "M" ausgegeben werden
        def test_1000(self):
            self.assertEqual(self.converter.convert(1000), "M")
    
        # Bei Eingabe der Zahl 0 soll "Es gibt keine römische Null" ausgegeben werden
        def test_0(self):
            self.assertEqual(self.converter.convert(0), "Es gibt keine römische Null")
    
        # Bei Eingabe eines Floats (4.3) soll "Bitte ganze Zahlen eingeben" ausgegeben werden
        def test_float(self):
            self.assertEqual(self.converter.convert(4.3), "Bitte ganze Zahlen eingeben")
    
        # Bei Eingabe eines negativen Werts (-5) soll "Es sind nur positive Zahlen zum konvertieren erlaubt" ausgegeben werden
        def test_negative(self):
            self.assertEqual(self.converter.convert(-5), "Es sind nur positive Zahlen zum konvertieren erlaubt")
    
        # Bei Eingabe von mehreren Werten wie "4,3" soll "Bitte nur eine ganze Zahl eingeben" ausgegeben werden
        def test_multiple_values(self):
            self.assertEqual(self.converter.convert("4,3"), "Bitte nur eine ganze Zahl eingeben")
    
    # Testausführung
    if __name__ == '__main__':
        unittest.main()