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"""A Command that enables test writers to specify a limited number of break 81364750dSJames Hendersonpoints using an start condition and range. 91364750dSJames Henderson""" 101364750dSJames Henderson 111364750dSJames Hendersonfrom dex.command.CommandBase import CommandBase 121364750dSJames Henderson 13*f98ee40fSTobias Hieta 141364750dSJames Hendersonclass DexLimitSteps(CommandBase): 151364750dSJames Henderson def __init__(self, *args, **kwargs): 161364750dSJames Henderson if len(args) == 0: 171364750dSJames Henderson self.expression = None 181364750dSJames Henderson self.values = [] 191364750dSJames Henderson elif len(args) == 1: 201364750dSJames Henderson raise TypeError("expected 0 or at least 2 positional arguments") 211364750dSJames Henderson else: 221364750dSJames Henderson self.expression = args[0] 231364750dSJames Henderson self.values = [str(arg) for arg in args[1:]] 241364750dSJames Henderson try: 25*f98ee40fSTobias Hieta on_line = kwargs.pop("on_line") 261364750dSJames Henderson self.from_line = on_line 271364750dSJames Henderson self.to_line = on_line 281364750dSJames Henderson except KeyError: 29*f98ee40fSTobias Hieta self.from_line = kwargs.pop("from_line", 1) 30*f98ee40fSTobias Hieta self.to_line = kwargs.pop("to_line", 999999) 31*f98ee40fSTobias Hieta self.hit_count = kwargs.pop("hit_count", None) 321364750dSJames Henderson if kwargs: 33*f98ee40fSTobias Hieta raise TypeError("unexpected named args: {}".format(", ".join(kwargs))) 341364750dSJames Henderson super(DexLimitSteps, self).__init__() 351364750dSJames Henderson 361364750dSJames Henderson def eval(self): 37*f98ee40fSTobias Hieta raise NotImplementedError("DexLimitSteps commands cannot be evaled.") 381364750dSJames Henderson 391364750dSJames Henderson @staticmethod 401364750dSJames Henderson def get_name(): 411364750dSJames Henderson return __class__.__name__ 421364750dSJames Henderson 431364750dSJames Henderson @staticmethod 441364750dSJames Henderson def get_subcommands() -> dict: 451364750dSJames Henderson return None 46