library DartObjectLocalStorageTest;
import 'package:unittest/unittest.dart';
import 'package:unittest/html_config.dart';
import 'dart:html';

// TODO(vsm): Rename this to wrapper_caching_test or similar.  It's
// basically a port of dom/dart_object_local_storage_test.dart.  For
// wrapping implementation of dart:html (i.e., the dartium one), it is
// effectively testing dart_object_local_storage in the underlying dom
// object.
main() {
  useHtmlConfiguration();

  BodyElement body = document.body;
  Storage localStorage = window.localStorage;
  Storage sessionStorage = window.sessionStorage;
  var element = new Element.tag('canvas');
  element.id = 'test';
  body.append(element);

  test('body', () {
      expect(body, equals(document.body));
  });
  test('localStorage', () {
      expect(localStorage, equals(window.localStorage));
  });
  test('sessionStorage', () {
      expect(sessionStorage, equals(window.sessionStorage));
  });
  test('unknown', () {
      var test = document.query('#test');
      expect(element, equals(test));
  });
}
