<!DOCTYPE html>
<html>
<head>
<title>The import attribute</title>
<link rel="help" href="http://w3c.github.io/webcomponents/spec/imports/#interface-import">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel="stylesheet" href="/resources/testharness.css">

<link id="nonImportLink" rel="stylesheet" href="resources/hello.css">
<link id="goOutFromDocument" rel="import" href="resources/body-only-0.html">
<link id="importLink"        rel="import" href="resources/body-only-1.html">
<link id="anotherImportLink" rel="import" href="resources/body-only-2.html">

</head>
<body>
<div id="log"></div>
<script>
test(function() {
   assert_equals(nonImportLink.import, null);
}, 'The import attribute must return null if the link does not represent an import.');

test(function() {
   var link = goOutFromDocument;
   assert_true(link.import != null);
   document.head.removeChild(link);
   assert_equals(link.import, null);
}, 'The import attribute must return null if the link element is not in a Document.');

test(function() {
   assert_equals(importLink.import.body.id, 'body-only-1');
}, 'The attribute must return the imported document for the import.');

test(function() {
   var importA = importLink.import;
   var importB = document.querySelector('#importLink').import;
   var anotherImport = document.querySelector('#anotherImportLink').import;
   assert_true(importA === importB);
   assert_true(importA !== anotherImport);
}, 'The same object must be returned each time.');
</script>
</body>
</html>

