// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/**
 * @assertion void setAttributeNS(String namespaceURI, String qualifiedName,
 * String value)
 * Set the value of the attribute with the specified name and namespace, from
 * the current node.
 * @description Checks expected attributes values after setting
 */
import "dart:html";
import "../../../Utils/expect.dart";
import "../testcommon.dart";

main() {
  var x = new Element.html(
      '<svg><iframe xlink:href="1" xlink:custom="2"></iframe></svg>',
      treeSanitizer: new NullTreeSanitizer());
  Element y = x.firstChild as Element;

  y.setAttributeNS(XlinkNamespace, 'href', 'foo');
  Expect.equals('foo', y.getAttributeNS(XlinkNamespace, 'href'),
      'change standard attribute');

  y.setAttributeNS(XlinkNamespace, 'custom', 'bar');
  Expect.equals('bar', y.getAttributeNS(XlinkNamespace, 'custom'),
      'change custom attribute');

  y.setAttributeNS(XlinkNamespace, 'new', 'one');
  Expect.equals(
      'one', y.getAttributeNS(XlinkNamespace, 'new'), 'add new attribute');
}
