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