# -*- coding: UTF-8 -*-

import WebIDL


def WebIDLTest(parser, harness):
    parser.parse(
        """
        interface TestUSVString {
          attribute USVString svs;
        };
    """
    )

    results = parser.finish()

    harness.check(len(results), 1, "Should be one production")
    harness.ok(isinstance(results[0], WebIDL.IDLInterface), "Should be an IDLInterface")
    iface = results[0]
    harness.check(
        iface.identifier.QName(), "::TestUSVString", "Interface has the right QName"
    )
    harness.check(
        iface.identifier.name, "TestUSVString", "Interface has the right name"
    )
    harness.check(iface.parent, None, "Interface has no parent")

    members = iface.members
    harness.check(len(members), 1, "Should be one member")

    attr = members[0]
    harness.ok(isinstance(attr, WebIDL.IDLAttribute), "Should be an IDLAttribute")
    harness.check(
        attr.identifier.QName(), "::TestUSVString::svs", "Attr has correct QName"
    )
    harness.check(attr.identifier.name, "svs", "Attr has correct name")
    harness.check(str(attr.type), "USVString", "Attr type is the correct name")
    harness.ok(attr.type.isUSVString(), "Should be USVString type")
    harness.ok(attr.type.isString(), "Should be String collective type")
    harness.ok(not attr.type.isDOMString(), "Should be not be DOMString type")
