import os here = os.path.dirname(__file__) readonly_template = """\ interface {interface}A {{ readonly setlike; static void {method}(); }}; interface {interface}B {{ readonly setlike; static readonly attribute long {method}; }}; """ readwrite_template = """\ interface ReadOnly {{ readonly setlike; }}; interface ReadWrite {{ setlike; }}; interface {interface}A {{ setlike; void {method}(); }}; interface {interface}B {{ readonly setlike; void {method}(); }}; interface {interface}C {{ readonly setlike; readonly attribute long {method}; }}; interface {interface}D {{ readonly setlike; const long {method} = 0; }}; interface {interface}E : ReadOnly {{ void {method}(); }}; interface {interface}F : ReadOnly {{ readonly attribute long {method}; }}; interface {interface}G : ReadOnly {{ const long {method} = 0; }}; interface {interface}H {{ readonly setlike; static void {method}(); }}; interface {interface}I {{ readonly setlike; static readonly attribute long {method}; }}; interface {interface}J1 {{ static void {method}(); }}; interface {interface}J2 : {interface}J1 {{ readonly setlike; }}; interface {interface}K1 {{ static readonly attribute long {method}; }}; interface {interface}K2 : {interface}K1 {{ readonly setlike; }}; """ members_readonly = [ "entries", "forEach", "has", "keys", "size", "values", ] members_readwrite = [ "add", "clear", "delete", ] def transform(m): return m[0].upper() + m[1:] tests = [ (members_readonly, readonly_template), (members_readwrite, readwrite_template), ] for (members, template) in tests: for method in members: path = "{here}/../valid/idl/setlike-{method}.widl".format(here=here, method=method) test = template.format(method=method, interface=transform(method)) with open(path, "wb") as f: f.write(test.encode("utf8"))