예제 #1
0
    def test_display_decompilation_progress_displays_correct_value_successful_decompilation(
            self):
        displayer = ProgressLogDisplayer()
        d = mock.Mock(spec_set=Decompilation)
        d.id = 'ID'
        d.has_finished.return_value = True
        d.has_failed.return_value = False
        d.get_phases.return_value = [
            DecompilationPhase(name='Waiting For Resources',
                               part=None,
                               description='Waiting for resources',
                               completion=0),
            DecompilationPhase(name='File Information',
                               part='Pre-Processing',
                               description='Obtaining file information',
                               completion=5),
            DecompilationPhase(name='Done',
                               part=None,
                               description='Done',
                               completion=100)
        ]

        displayer.display_decompilation_progress(d)

        self.assertEqual(
            self.stdout.getvalue(), """
ID
--

Waiting for resources (0%)...                      [OK]
Pre-Processing:
    Obtaining file information (5%)...             [OK]
Done (100%)...                                     \n""".lstrip())
예제 #2
0
    def test_two_phases_with_different_completion_are_not_equal(self):
        phase1 = DecompilationPhase(
            name='NAME',
            part='PART',
            description='DESCRIPTION',
            completion=75
        )
        phase2 = DecompilationPhase(
            name='NAME',
            part='PART',
            description='DESCRIPTION',
            completion=100
        )

        self.assertNotEqual(phase1, phase2)
예제 #3
0
    def test_two_phases_with_same_data_are_equal(self):
        phase1 = DecompilationPhase(
            name='NAME',
            part='PART',
            description='DESCRIPTION',
            completion=75
        )
        phase2 = DecompilationPhase(
            name='NAME',
            part='PART',
            description='DESCRIPTION',
            completion=75
        )

        self.assertEqual(phase1, phase2)
예제 #4
0
 def _phases_from_status(self, status):
     """Creates a list of phases from the given status."""
     return [
         DecompilationPhase(phase['name'], phase['part'],
                            phase['description'], phase['completion'])
         for phase in status['phases']
     ]
예제 #5
0
    def test_arguments_passed_to_initializer_are_accessible(self):
        phase = DecompilationPhase(
            name='NAME',
            part='PART',
            description='DESCRIPTION',
            completion=75
        )

        self.assertEqual(phase.name, 'NAME')
        self.assertEqual(phase.part, 'PART')
        self.assertEqual(phase.description, 'DESCRIPTION')
        self.assertEqual(phase.completion, 75)
예제 #6
0
 def test_repr_returns_correct_value(self):
     phase = DecompilationPhase(
         name='NAME',
         part='PART',
         description='DESCRIPTION',
         completion=75
     )
     self.assertEqual(
         repr(phase),
         ("retdec.decompilation_phase.DecompilationPhase(name='NAME', "
          "part='PART', description='DESCRIPTION', completion=75)")
     )
예제 #7
0
    def test_display_decompilation_progress_displays_correct_value_failed_decompilation(
            self):
        displayer = ProgressLogDisplayer()
        d = mock.Mock(spec_set=Decompilation)
        d.id = 'ID'
        d.has_finished.return_value = True
        d.has_failed.return_value = True
        d.get_phases.return_value = [
            DecompilationPhase(name='Waiting For Resources',
                               part=None,
                               description='Waiting for resources',
                               completion=0)
        ]

        displayer.display_decompilation_progress(d)

        self.assertEqual(
            self.stdout.getvalue(), """
ID
--

Waiting for resources (0%)...                      [FAIL]
""".lstrip())