def border_radius(): num = Random.range(1, 4) values = [length_percentage() for _ in range(num)] if Random.bool(): values.append("/") num = Random.range(1, 4) values.extend([length_percentage() for _ in range(num)]) return cat(values)
def arc_curve(): cmd = Random.choice(["A", "a"]) rx = Random.integer() ry = Random.integer() _angle = Random.integer() large_arc_flag = Random.range(0, 1) sweep_flag = Random.range(0, 1) dx = Random.integer() dy = Random.integer() return "{} {} {} {} {} {} {},{}".format(cmd, rx, ry, _angle, large_arc_flag, sweep_flag, dx, dy)
def generate_attributes(self, context): avail_attr_count = get_attribute_count(self.name) if avail_attr_count >= 20: total_count = TreeConfig.max_attribute_count elif avail_attr_count >= 10: total_count = Random.range(5, avail_attr_count) elif avail_attr_count >= 1: total_count = Random.range(1, avail_attr_count) else: total_count = 0 for _ in range(total_count): self.append_attribute(context)
def generate_css_rules(self, context): for _ in range(CSSConfig.max_css_count): self.append_css_style_rule(context) for rule in self.css_style_rules: for _ in range( Random.range(0, CSSConfig.max_css_selector_count - 1)): rule.append_selector(context) for _ in range(CSSConfig.max_css_decl_count - 1): rule.append_decl(context) for rule in self.css_keyframes_rules: for _ in range(Random.range(1, CSSConfig.max_css_keyframe_count)): rule.append_keyframe_rule(context)
def list_size(): if Random.bool(): return Random.range(1, 5) else: # Special sizes that may trigger realloc # See ./animations/crash-when-animation-is-running-while-getting-value.html return Random.choice([7, 8, 9, 15, 16, 17, 31, 32, 33, 63, 64, 65])
def generate_one(self): document = Document(Random.range(TreeConfig.min_element_count, TreeConfig.max_element_count)) document.generate_nodes() document.generate_attributes() document.generate_css_rules() document.generate_js_functions() return document
def polygon(): values = [] if Random.bool(): values.append(fill_rule()) num = Random.range(2, 5) for _ in range(num): values.append("{} {}".format(length_percentage(), length_percentage())) return "polygon({})".format(seq(values))
def tab_index(): c = Random.selector(3) if c == 0: return "-1" elif c == 1: return str(Random.range(0, 5)) else: return Random.integer()
def coords(): c = Random.selector(3) if c == 0: n = 4 elif c == 1: n = 3 else: n = Random.range(3, 5) * 2 return seq([Random.integer() for _ in range(n)])
def font_feature_settings(): def single(): values = [ "'{}'".format( Random.choice([ "smcp", "c2sc", "zero", "hist", "liga", "tnum", "frac", "swsh", "ss07", "dlig", "vert", "hwid", "twid", "qwid", "kern", "onum" ])) ] if Random.bool(): if Random.bool(): values.append(Random.choice(["on", "off"])) else: values.append(Random.integer()) return cat(values) num = Random.range(1, 2) return seq([single() for _ in range(num)])
def generate(self, _): num = Random.range(1, 2) self.value = cat([Random.number() for _ in range(num)])
def generate(self, _): num = Random.range(1, 2) self.value = cat([dv.length_percentage() for _ in range(num)])
def generate(self, _): num = Random.range(1, 5) self.value = cat([dv.length() for _ in range(num)])
def generate(self, _): num = Random.range(1, 4) self.value = cat([Random.float01() for _ in range(num)])
def clock_in_ms(): return str(Random.range(0, 3) * 100)
def generate(self, _): self.value = "H{}".format(Random.range(1, 6))
def translate(): num = Random.range(1, 2) value = seq([length_percentage() for _ in range(num)]) return "translate({})".format(value)
def generate(self, _): self.value = Random.range(0, 16)
def percentage(): if Random.bool(): return Random.choice(["0%", "100%"]) else: return "{}%".format(Random.range(0, 100))
def inset(): num = Random.range(1, 4) values = [length_percentage() for _ in range(num)] if Random.bool(): values.append("round {}".format(border_radius())) return "inset({})".format(cat(values))
def scale(): num = Random.range(1, 2) value = seq([Random.number() for _ in range(num)]) return "scale({})".format(value)
def generate(self, _): num = Random.range(1, 2) self.value = cat([svg_transform() for _ in range(num)])
def generate(self, _): order = Random.range(0, 2) self.value = cat([Random.integer() for _ in range(order**2)])
def index(): if Random.selector(5) == 0: return Random.integer() else: return str(Random.range(0, 8))
def generate(self, _): def single(): return "{}x{}".format(Random.integer(), Random.integer()) num = Random.range(1, 2) self.value = cat([single() for _ in range(num)])
def generate(self, _): self.value = str(Random.range(0, 2))
def generate(self, _): self.value = Random.range(self.low, self.high)
def skew(): num = Random.range(1, 2) value = seq([angle() for _ in range(num)]) return "skew({})".format(value)