xref: /llvm-project/cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexExpectStepKind.py (revision f98ee40f4b5d7474fc67e82824bf6abbaedb7b1c)
11364750dSJames Henderson# DExTer : Debugging Experience Tester
21364750dSJames Henderson# ~~~~~~   ~         ~~         ~   ~~
31364750dSJames Henderson#
41364750dSJames Henderson# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
51364750dSJames Henderson# See https://llvm.org/LICENSE.txt for license information.
61364750dSJames Henderson# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
71364750dSJames Henderson"""Command for specifying an expected number of steps of a particular kind."""
81364750dSJames Henderson
91364750dSJames Hendersonfrom dex.command.CommandBase import CommandBase
101364750dSJames Hendersonfrom dex.dextIR.StepIR import StepKind
111364750dSJames Henderson
121364750dSJames Henderson
131364750dSJames Hendersonclass DexExpectStepKind(CommandBase):
141364750dSJames Henderson    """Expect to see a particular step `kind` a number of `times` while stepping
151364750dSJames Henderson    through the program.
161364750dSJames Henderson
171364750dSJames Henderson    DexExpectStepKind(kind, times)
181364750dSJames Henderson
191364750dSJames Henderson    See Commands.md for more info.
201364750dSJames Henderson    """
211364750dSJames Henderson
221364750dSJames Henderson    def __init__(self, *args):
231364750dSJames Henderson        if len(args) != 2:
24*f98ee40fSTobias Hieta            raise TypeError("expected two args")
251364750dSJames Henderson
261364750dSJames Henderson        try:
271364750dSJames Henderson            step_kind = StepKind[args[0]]
281364750dSJames Henderson        except KeyError:
29*f98ee40fSTobias Hieta            raise TypeError(
30*f98ee40fSTobias Hieta                "expected arg 0 to be one of {}".format(
31*f98ee40fSTobias Hieta                    [kind for kind, _ in StepKind.__members__.items()]
32*f98ee40fSTobias Hieta                )
33*f98ee40fSTobias Hieta            )
341364750dSJames Henderson
351364750dSJames Henderson        self.name = step_kind
361364750dSJames Henderson        self.count = args[1]
371364750dSJames Henderson
381364750dSJames Henderson        super(DexExpectStepKind, self).__init__()
391364750dSJames Henderson
401364750dSJames Henderson    @staticmethod
411364750dSJames Henderson    def get_name():
421364750dSJames Henderson        return __class__.__name__
431364750dSJames Henderson
441364750dSJames Henderson    def eval(self):
451364750dSJames Henderson        # DexExpectStepKind eval() implementation is mixed into
461364750dSJames Henderson        # Heuristic.__init__()
471364750dSJames Henderson        # [TODO] Fix this ^.
481364750dSJames Henderson        pass
49