{"version":3,"sources":["ember-qunit.js","ember-qunit/module-for-component.js","ember-qunit/module-for-model.js","ember-qunit/module-for.js","ember-qunit/qunit-module.js","ember-qunit/test.js","ember-test-helpers.js","ember-test-helpers/build-registry.js","ember-test-helpers/isolated-container.js","ember-test-helpers/test-context.js","ember-test-helpers/test-module-for-component.js","ember-test-helpers/test-module-for-model.js","ember-test-helpers/test-module.js","ember-test-helpers/test-resolver.js","klassy.js","qunit.js"],"sourcesContent":["define('ember-qunit', ['exports', 'ember-qunit/module-for', 'ember-qunit/module-for-component', 'ember-qunit/module-for-model', 'ember-qunit/test', 'ember-test-helpers'], function (exports, moduleFor, moduleForComponent, moduleForModel, test, ember_test_helpers) {\n\n  'use strict';\n\n\n\n  exports.moduleFor = moduleFor['default'];\n  exports.moduleForComponent = moduleForComponent['default'];\n  exports.moduleForModel = moduleForModel['default'];\n  exports.test = test['default'];\n  exports.setResolver = ember_test_helpers.setResolver;\n\n});","define('ember-qunit/module-for-component', ['exports', 'ember-qunit/qunit-module', 'ember-test-helpers'], function (exports, qunit_module, ember_test_helpers) {\n\n  'use strict';\n\n  function moduleForComponent(name, description, callbacks) {\n    qunit_module.createModule(ember_test_helpers.TestModuleForComponent, name, description, callbacks);\n  }\n  exports['default'] = moduleForComponent;\n\n});","define('ember-qunit/module-for-model', ['exports', 'ember-qunit/qunit-module', 'ember-test-helpers'], function (exports, qunit_module, ember_test_helpers) {\n\n  'use strict';\n\n  function moduleForModel(name, description, callbacks) {\n    qunit_module.createModule(ember_test_helpers.TestModuleForModel, name, description, callbacks);\n  }\n  exports['default'] = moduleForModel;\n\n});","define('ember-qunit/module-for', ['exports', 'ember-qunit/qunit-module', 'ember-test-helpers'], function (exports, qunit_module, ember_test_helpers) {\n\n  'use strict';\n\n  function moduleFor(name, description, callbacks) {\n    qunit_module.createModule(ember_test_helpers.TestModule, name, description, callbacks);\n  }\n  exports['default'] = moduleFor;\n\n});","define('ember-qunit/qunit-module', ['exports', 'qunit'], function (exports, qunit) {\n\n  'use strict';\n\n  exports.createModule = createModule;\n\n  function beforeEachCallback(callbacks) {\n    if (typeof callbacks !== 'object') { return; }\n    if (!callbacks) { return; }\n\n    var beforeEach;\n    \n    if (callbacks.setup) {\n      beforeEach = callbacks.setup;\n      delete callbacks.setup;\n    }\n\n    if (callbacks.beforeEach) {\n      beforeEach = callbacks.beforeEach;\n      delete callbacks.beforeEach;\n    }\n\n    return beforeEach;\n  }\n\n  function afterEachCallback(callbacks) {\n    if (typeof callbacks !== 'object') { return; }\n    if (!callbacks) { return; }\n\n    var afterEach;\n\n    if (callbacks.teardown) {\n      afterEach = callbacks.teardown;\n      delete callbacks.teardown;\n    }\n\n    if (callbacks.afterEach) {\n      afterEach = callbacks.afterEach;\n      delete callbacks.afterEach;\n    }\n\n    return afterEach;\n  }\n\n  function createModule(Constructor, name, description, callbacks) {\n    var beforeEach = beforeEachCallback(callbacks || description);\n    var afterEach  = afterEachCallback(callbacks || description);\n\n    var module = new Constructor(name, description, callbacks);\n\n    qunit.module(module.name, {\n      setup: function(assert) {\n        var done = assert.async();\n        module.setup().then(function() {\n          if (beforeEach) {\n            beforeEach.call(module.context, assert);\n          }\n        })['finally'](done);\n      },\n\n      teardown: function(assert) {\n        if (afterEach) {\n          afterEach.call(module.context, assert);\n        }\n        var done = assert.async();\n        module.teardown()['finally'](done);\n      }\n    });\n  }\n\n});","define('ember-qunit/test', ['exports', 'ember', 'ember-test-helpers', 'qunit'], function (exports, Ember, ember_test_helpers, qunit) {\n\n  'use strict';\n\n  function test(testName, callback) {\n    function wrapper(assert) {\n      var context = ember_test_helpers.getContext();\n\n      var result = callback.call(context, assert);\n\n      function failTestOnPromiseRejection(reason) {\n        var message;\n        if (reason instanceof Error) {\n          message = reason.stack;\n        } else {\n          message = Ember['default'].inspect(reason);\n        }\n        ok(false, message);\n      }\n\n      Ember['default'].run(function(){\n        QUnit.stop();\n        Ember['default'].RSVP.Promise.resolve(result)['catch'](failTestOnPromiseRejection)['finally'](QUnit.start);\n      });\n    }\n\n    qunit.test(testName, wrapper);\n  }\n  exports['default'] = test;\n\n});","define('ember-test-helpers', ['exports', 'ember', 'ember-test-helpers/test-module', 'ember-test-helpers/test-module-for-component', 'ember-test-helpers/test-module-for-model', 'ember-test-helpers/test-context', 'ember-test-helpers/test-resolver'], function (exports, Ember, TestModule, TestModuleForComponent, TestModuleForModel, test_context, test_resolver) {\n\n  'use strict';\n\n  Ember['default'].testing = true;\n\n  exports.TestModule = TestModule['default'];\n  exports.TestModuleForComponent = TestModuleForComponent['default'];\n  exports.TestModuleForModel = TestModuleForModel['default'];\n  exports.getContext = test_context.getContext;\n  exports.setContext = test_context.setContext;\n  exports.setResolver = test_resolver.setResolver;\n\n});","define('ember-test-helpers/build-registry', ['exports'], function (exports) {\n\n  'use strict';\n\n  function exposeRegistryMethodsWithoutDeprecations(container) {\n    var methods = [\n      'register',\n      'unregister',\n      'resolve',\n      'normalize',\n      'typeInjection',\n      'injection',\n      'factoryInjection',\n      'factoryTypeInjection',\n      'has',\n      'options',\n      'optionsForType'\n    ];\n\n    function exposeRegistryMethod(container, method) {\n      container[method] = function() {\n        return container._registry[method].apply(container._registry, arguments);\n      };\n    }\n\n    for (var i = 0, l = methods.length; i < l; i++) {\n      exposeRegistryMethod(container, methods[i]);\n    }\n  }\n\n  exports['default'] = function(resolver) {\n    var registry, container;\n    var namespace = Ember.Object.create({\n      Resolver: { create: function() { return resolver; } }\n    });\n\n    function register(name, factory) {\n      var thingToRegisterWith = registry || container;\n\n      if (!container.lookupFactory(name)) {\n        thingToRegisterWith.register(name, factory);\n      }\n    }\n\n    if (Ember.Application.buildRegistry) {\n      registry = Ember.Application.buildRegistry(namespace);\n      registry.register('component-lookup:main', Ember.ComponentLookup);\n\n      registry = registry;\n      container = registry.container();\n      exposeRegistryMethodsWithoutDeprecations(container);\n    } else {\n      container = Ember.Application.buildContainer(namespace);\n      container.register('component-lookup:main', Ember.ComponentLookup);\n    }\n\n    // Ember 1.10.0 did not properly add `view:toplevel` or `view:default`\n    // to the registry in Ember.Application.buildRegistry :(\n    register('view:toplevel', Ember.View.extend());\n    register('view:default', Ember._MetamorphView);\n\n    var globalContext = typeof global === 'object' && global || self;\n    if (globalContext.DS) {\n      var DS = globalContext.DS;\n      if (DS._setupContainer) {\n        DS._setupContainer(registry || container);\n      } else {\n        register('transform:boolean', DS.BooleanTransform);\n        register('transform:date', DS.DateTransform);\n        register('transform:number', DS.NumberTransform);\n        register('transform:string', DS.StringTransform);\n        register('serializer:-default', DS.JSONSerializer);\n        register('serializer:-rest', DS.RESTSerializer);\n        register('adapter:-rest', DS.RESTAdapter);\n      }\n    }\n\n    return {\n      registry: registry,\n      container: container\n    };\n  }\n\n});","define('ember-test-helpers/isolated-container', function () {\n\n\t'use strict';\n\n});","define('ember-test-helpers/test-context', ['exports'], function (exports) {\n\n  'use strict';\n\n  exports.setContext = setContext;\n  exports.getContext = getContext;\n\n  var __test_context__;\n\n  function setContext(context) {\n    __test_context__ = context;\n  }\n\n  function getContext() {\n    return __test_context__;\n  }\n\n});","define('ember-test-helpers/test-module-for-component', ['exports', 'ember-test-helpers/test-module', 'ember', 'ember-test-helpers/test-resolver'], function (exports, TestModule, Ember, test_resolver) {\n\n  'use strict';\n\n  exports['default'] = TestModule['default'].extend({\n    init: function(componentName, description, callbacks) {\n      // Allow `description` to be omitted\n      if (!callbacks && typeof description === 'object') {\n        callbacks = description;\n        description = null;\n      } else if (!callbacks) {\n        callbacks = {};\n      }\n\n      this.componentName = componentName;\n\n      if (callbacks.needs || callbacks.unit || callbacks.integration === false) {\n        this.isUnitTest = true;\n      } else if (callbacks.integration) {\n        this.isUnitTest = false;\n      } else {\n        Ember['default'].deprecate(\"the component:\" + componentName + \" test module is implicitly running in unit test mode, which will change to integration test mode by default in an upcoming version of ember-test-helpers. Add `unit: true` or a `needs:[]` list to explicitly opt in to unit test mode.\");\n        this.isUnitTest = true;\n      }\n\n      if (!this.isUnitTest) {\n        callbacks.integration = true;\n      }\n\n      if (description) {\n        this._super.call(this, 'component:' + componentName, description, callbacks);\n      } else {\n        this._super.call(this, 'component:' + componentName, callbacks);\n      }\n\n      if (this.isUnitTest) {\n        this.setupSteps.push(this.setupComponentUnitTest);\n      } else {\n        this.callbacks.subject = function() {\n          throw new Error(\"component integration tests do not support `subject()`.\");\n        };\n        this.setupSteps.push(this.setupComponentIntegrationTest);\n        this.teardownSteps.push(this.teardownComponent);\n      }\n    },\n\n    setupComponentUnitTest: function() {\n      var _this = this;\n      var resolver = test_resolver.getResolver();\n      var container = this.container;\n      var context = this.context;\n\n      var layoutName = 'template:components/' + this.componentName;\n\n      var layout = resolver.resolve(layoutName);\n\n      if (layout) {\n        container.register(layoutName, layout);\n        container.injection(this.subjectName, 'layout', layoutName);\n      }\n\n      context.dispatcher = Ember['default'].EventDispatcher.create();\n      context.dispatcher.setup({}, '#ember-testing');\n\n      this.callbacks.render = function() {\n        var containerView = Ember['default'].ContainerView.create({container: container});\n        Ember['default'].run(function(){\n          var subject = context.subject();\n          containerView.pushObject(subject);\n          containerView.appendTo('#ember-testing');\n        });\n\n        _this.teardownSteps.unshift(function() {\n          Ember['default'].run(function() {\n            Ember['default'].tryInvoke(containerView, 'destroy');\n          });\n        });\n      };\n\n      this.callbacks.append = function() {\n        Ember['default'].deprecate('this.append() is deprecated. Please use this.render() or this.$() instead.');\n        return context.$();\n      };\n\n      context.$ = function() {\n        this.render();\n        var subject = this.subject();\n\n        return subject.$.apply(subject, arguments);\n      };\n    },\n\n    setupComponentIntegrationTest: function() {\n      var module = this;\n      var context = this.context;\n      context.dispatcher = Ember['default'].EventDispatcher.create();\n      context.dispatcher.setup({}, '#ember-testing');\n      this.actionHooks = {};\n\n      context.render = function(template) {\n        if (!template) {\n          throw new Error(\"in a component integration test you must pass a template to `render()`\");\n        }\n        if (Ember['default'].isArray(template)) {\n          template = template.join('');\n        }\n        if (typeof template === 'string') {\n          template = Ember['default'].Handlebars.compile(template);\n        }\n        module.component = Ember['default'].Component.create({\n          layout: template,\n          container: module.container\n        });\n        module.component.set('context' ,context);\n        module.component.set('controller', module);\n\n        Ember['default'].run(function() {\n          module.component.appendTo('#ember-testing');\n        });\n      };\n\n      context.$ = function() {\n        return module.component.$.apply(module.component, arguments);\n      };\n\n      context.set = function(key, value) {\n        Ember['default'].run(function() {\n          Ember['default'].set(context, key, value);\n        });\n      };\n\n      context.get = function(key) {\n        return Ember['default'].get(context, key);\n      };\n\n      context.on = function(actionName, handler) {\n        module.actionHooks[actionName] = handler;\n      };\n\n    },\n\n    setupContext: function() {\n      this._super.call(this);\n      if (!this.isUnitTest) {\n        this.context.factory = function() {};\n      }\n    },\n\n\n    send: function(actionName) {\n      var hook = this.actionHooks[actionName];\n      if (!hook) {\n        throw new Error(\"integration testing template received unexpected action \" + actionName);\n      }\n      hook.apply(this, Array.prototype.slice.call(arguments, 1));\n    },\n\n    teardownComponent: function() {\n      var component = this.component;\n      if (component) {\n        Ember['default'].run(function() {\n          component.destroy();\n        });\n      }\n    }\n\n\n  });\n\n});","define('ember-test-helpers/test-module-for-model', ['exports', 'ember-test-helpers/test-module', 'ember'], function (exports, TestModule, Ember) {\n\n  'use strict';\n\n  exports['default'] = TestModule['default'].extend({\n    init: function(modelName, description, callbacks) {\n      this.modelName = modelName;\n\n      this._super.call(this, 'model:' + modelName, description, callbacks);\n\n      this.setupSteps.push(this.setupModel);\n    },\n\n    setupModel: function() {\n      var container = this.container;\n      var defaultSubject = this.defaultSubject;\n      var callbacks = this.callbacks;\n      var modelName = this.modelName;\n\n      var adapterFactory = container.lookupFactory('adapter:application');\n      if (!adapterFactory) {\n        container.register('adapter:application', DS.FixtureAdapter);\n      }\n\n      callbacks.store = function(){\n        var container = this.container;\n        var store = container.lookup('service:store') || container.lookup('store:main');\n        return store;\n      };\n\n      if (callbacks.subject === defaultSubject) {\n        callbacks.subject = function(options) {\n          var container = this.container;\n\n          return Ember['default'].run(function() {\n            var store = container.lookup('service:store') || container.lookup('store:main');\n            return store.createRecord(modelName, options);\n          });\n        };\n      }\n    }\n  });\n\n});","define('ember-test-helpers/test-module', ['exports', 'ember', 'ember-test-helpers/test-context', 'klassy', 'ember-test-helpers/test-resolver', 'ember-test-helpers/build-registry'], function (exports, Ember, test_context, klassy, test_resolver, buildRegistry) {\n\n  'use strict';\n\n  exports['default'] = klassy.Klass.extend({\n    init: function(subjectName, description, callbacks) {\n      // Allow `description` to be omitted, in which case it should\n      // default to `subjectName`\n      if (!callbacks && typeof description === 'object') {\n        callbacks = description;\n        description = subjectName;\n      }\n\n      this.subjectName = subjectName;\n      this.description = description || subjectName;\n      this.name = description || subjectName;\n      this.callbacks = callbacks || {};\n\n      if (this.callbacks.integration) {\n        this.isIntegration = callbacks.integration;\n        delete callbacks.integration;\n      }\n\n      this.initSubject();\n      this.initNeeds();\n      this.initSetupSteps();\n      this.initTeardownSteps();\n    },\n\n    initSubject: function() {\n      this.callbacks.subject = this.callbacks.subject || this.defaultSubject;\n    },\n\n    initNeeds: function() {\n      this.needs = [this.subjectName];\n      if (this.callbacks.needs) {\n        this.needs = this.needs.concat(this.callbacks.needs);\n        delete this.callbacks.needs;\n      }\n    },\n\n    initSetupSteps: function() {\n      this.setupSteps = [];\n      this.contextualizedSetupSteps = [];\n\n      if (this.callbacks.beforeSetup) {\n        this.setupSteps.push( this.callbacks.beforeSetup );\n        delete this.callbacks.beforeSetup;\n      }\n\n      this.setupSteps.push(this.setupContainer);\n      this.setupSteps.push(this.setupContext);\n      this.setupSteps.push(this.setupTestElements);\n\n      if (this.callbacks.setup) {\n        this.contextualizedSetupSteps.push( this.callbacks.setup );\n        delete this.callbacks.setup;\n      }\n    },\n\n    initTeardownSteps: function() {\n      this.teardownSteps = [];\n      this.contextualizedTeardownSteps = [];\n\n      if (this.callbacks.teardown) {\n        this.contextualizedTeardownSteps.push( this.callbacks.teardown );\n        delete this.callbacks.teardown;\n      }\n\n      this.teardownSteps.push(this.teardownSubject);\n      this.teardownSteps.push(this.teardownContainer);\n      this.teardownSteps.push(this.teardownContext);\n      this.teardownSteps.push(this.teardownTestElements);\n\n      if (this.callbacks.afterTeardown) {\n        this.teardownSteps.push( this.callbacks.afterTeardown );\n        delete this.callbacks.afterTeardown;\n      }\n    },\n\n    setup: function() {\n      var self = this;\n      return self.invokeSteps(self.setupSteps).then(function() {\n        self.contextualizeCallbacks();\n        return self.invokeSteps(self.contextualizedSetupSteps, self.context);\n      });\n    },\n\n    teardown: function() {\n      var self = this;\n      return self.invokeSteps(self.contextualizedTeardownSteps, self.context).then(function() {\n        return self.invokeSteps(self.teardownSteps);\n      }).then(function() {\n        self.cache = null;\n        self.cachedCalls = null;\n      });\n    },\n\n    invokeSteps: function(steps, _context) {\n      var context = _context;\n      if (!context) {\n        context = this;\n      }\n      steps = steps.slice();\n      function nextStep() {\n        var step = steps.shift();\n        if (step) {\n          // guard against exceptions, for example missing components referenced from needs.\n          return new Ember['default'].RSVP.Promise(function(ok) {\n            ok(step.call(context));\n          }).then(nextStep);\n        } else {\n          return Ember['default'].RSVP.resolve();\n        }\n      }\n      return nextStep();\n    },\n\n    setupContainer: function() {\n      if (this.isIntegration) {\n        this._setupIntegratedContainer();\n      } else {\n        this._setupIsolatedContainer();\n      }\n    },\n\n    setupContext: function() {\n      var subjectName = this.subjectName;\n      var container = this.container;\n\n      var factory = function() {\n        return container.lookupFactory(subjectName);\n      };\n\n      test_context.setContext({\n        container:  this.container,\n        registry: this.registry,\n        factory:    factory,\n        dispatcher: null\n      });\n\n      this.context = test_context.getContext();\n    },\n\n    setupTestElements: function() {\n      if (Ember['default'].$('#ember-testing').length === 0) {\n        Ember['default'].$('<div id=\"ember-testing\"/>').appendTo(document.body);\n      }\n    },\n\n    teardownSubject: function() {\n      var subject = this.cache.subject;\n\n      if (subject) {\n        Ember['default'].run(function() {\n          Ember['default'].tryInvoke(subject, 'destroy');\n        });\n      }\n    },\n\n    teardownContainer: function() {\n      var container = this.container;\n      Ember['default'].run(function() {\n        container.destroy();\n      });\n    },\n\n    teardownContext: function() {\n      var context = this.context;\n      if (context.dispatcher) {\n        Ember['default'].run(function() {\n          context.dispatcher.destroy();\n        });\n      }\n    },\n\n    teardownTestElements: function() {\n      Ember['default'].$('#ember-testing').empty();\n      Ember['default'].View.views = {};\n    },\n\n    defaultSubject: function(options, factory) {\n      return factory.create(options);\n    },\n\n    // allow arbitrary named factories, like rspec let\n    contextualizeCallbacks: function() {\n      var _this     = this;\n      var callbacks = this.callbacks;\n      var context   = this.context;\n      var factory   = context.factory;\n\n      this.cache = this.cache || {};\n      this.cachedCalls = this.cachedCalls || {};\n\n      var keys = (Object.keys || Ember['default'].keys)(callbacks);\n\n      for (var i = 0, l = keys.length; i < l; i++) {\n        (function(key) {\n\n          context[key] = function(options) {\n            if (_this.cachedCalls[key]) { return _this.cache[key]; }\n\n            var result = callbacks[key].call(_this, options, factory());\n\n            _this.cache[key] = result;\n            _this.cachedCalls[key] = true;\n\n            return result;\n          };\n\n        })(keys[i]);\n      }\n    },\n\n    _setupContainer: function() {\n      var resolver = test_resolver.getResolver();\n      var items = buildRegistry['default'](resolver);\n\n      this.container = items.container;\n      this.registry = items.registry;\n\n      var thingToRegisterWith = this.registry || this.container;\n      var router = resolver.resolve('router:main');\n      router = router || Ember['default'].Router.extend();\n      thingToRegisterWith.register('router:main', router);\n    },\n\n    _setupIsolatedContainer: function() {\n      var resolver = test_resolver.getResolver();\n      this._setupContainer();\n\n      var thingToRegisterWith = this.registry || this.container;\n\n      for (var i = this.needs.length; i > 0; i--) {\n        var fullName = this.needs[i - 1];\n        var normalizedFullName = resolver.normalize(fullName);\n        thingToRegisterWith.register(fullName, resolver.resolve(normalizedFullName));\n      }\n\n      thingToRegisterWith.resolver = function() { };\n    },\n\n    _setupIntegratedContainer: function() {\n      this._setupContainer();\n    }\n\n  });\n\n});","define('ember-test-helpers/test-resolver', ['exports'], function (exports) {\n\n  'use strict';\n\n  exports.setResolver = setResolver;\n  exports.getResolver = getResolver;\n\n  var __resolver__;\n\n  function setResolver(resolver) {\n    __resolver__ = resolver;\n  }\n\n  function getResolver() {\n    if (__resolver__ == null) throw new Error('you must set a resolver with `testResolver.set(resolver)`');\n    return __resolver__;\n  }\n\n});","define('klassy', ['exports'], function (exports) {\n\n  'use strict';\n\n  /**\n   Extend a class with the properties and methods of one or more other classes.\n\n   When a method is replaced with another method, it will be wrapped in a\n   function that makes the replaced method accessible via `this._super`.\n\n   @method extendClass\n   @param {Object} destination The class to merge into\n   @param {Object} source One or more source classes\n   */\n  var extendClass = function(destination) {\n    var sources = Array.prototype.slice.call(arguments, 1);\n    var source;\n\n    for (var i = 0, l = sources.length; i < l; i++) {\n      source = sources[i];\n\n      for (var p in source) {\n        if (source.hasOwnProperty(p) &&\n          destination[p] &&\n          typeof destination[p] === 'function' &&\n          typeof source[p] === 'function') {\n\n          /* jshint loopfunc:true */\n          destination[p] =\n            (function(destinationFn, sourceFn) {\n              var wrapper = function() {\n                var prevSuper = this._super;\n                this._super = destinationFn;\n\n                var ret = sourceFn.apply(this, arguments);\n\n                this._super = prevSuper;\n\n                return ret;\n              };\n              wrapper.wrappedFunction = sourceFn;\n              return wrapper;\n            })(destination[p], source[p]);\n\n        } else {\n          destination[p] = source[p];\n        }\n      }\n    }\n  };\n\n  // `subclassing` is a state flag used by `defineClass` to track when a class is\n  // being subclassed. It allows constructors to avoid calling `init`, which can\n  // be expensive and cause undesirable side effects.\n  var subclassing = false;\n\n  /**\n   Define a new class with the properties and methods of one or more other classes.\n\n   The new class can be based on a `SuperClass`, which will be inserted into its\n   prototype chain.\n\n   Furthermore, one or more mixins (object that contain properties and/or methods)\n   may be specified, which will be applied in order. When a method is replaced\n   with another method, it will be wrapped in a function that makes the previous\n   method accessible via `this._super`.\n\n   @method defineClass\n   @param {Object} SuperClass A base class to extend. If `mixins` are to be included\n   without a `SuperClass`, pass `null` for SuperClass.\n   @param {Object} mixins One or more objects that contain properties and methods\n   to apply to the new class.\n   */\n  var defineClass = function(SuperClass) {\n    var Klass = function() {\n      if (!subclassing && this.init) {\n        this.init.apply(this, arguments);\n      }\n    };\n\n    if (SuperClass) {\n      subclassing = true;\n      Klass.prototype = new SuperClass();\n      subclassing = false;\n    }\n\n    if (arguments.length > 1) {\n      var extendArgs = Array.prototype.slice.call(arguments, 1);\n      extendArgs.unshift(Klass.prototype);\n      extendClass.apply(Klass.prototype, extendArgs);\n    }\n\n    Klass.constructor = Klass;\n\n    Klass.extend = function() {\n      var args = Array.prototype.slice.call(arguments, 0);\n      args.unshift(Klass);\n      return defineClass.apply(Klass, args);\n    };\n\n    return Klass;\n  };\n\n  /**\n   A base class that can be extended.\n\n   @example\n\n   ```javascript\n   var CelestialObject = Klass.extend({\n     init: function(name) {\n       this._super();\n       this.name = name;\n       this.isCelestialObject = true;\n     },\n     greeting: function() {\n       return 'Hello from ' + this.name;\n     }\n   });\n\n   var Planet = CelestialObject.extend({\n     init: function(name) {\n       this._super.apply(this, arguments);\n       this.isPlanet = true;\n     },\n     greeting: function() {\n       return this._super() + '!';\n     },\n   });\n\n   var earth = new Planet('Earth');\n\n   console.log(earth instanceof Klass);           // true\n   console.log(earth instanceof CelestialObject); // true\n   console.log(earth instanceof Planet);          // true\n\n   console.log(earth.isCelestialObject);          // true\n   console.log(earth.isPlanet);                   // true\n\n   console.log(earth.greeting());                 // 'Hello from Earth!'\n   ```\n\n   @class Klass\n   */\n  var Klass = defineClass(null, {\n    init: function() {}\n  });\n\n  exports.Klass = Klass;\n  exports.defineClass = defineClass;\n  exports.extendClass = extendClass;\n\n});","define('qunit', ['exports'], function (exports) {\n\n\t'use strict';\n\n\t/* globals test:true */\n\n\tvar module = QUnit.module;\n\tvar test = QUnit.test;\n\tvar skip = QUnit.skip;\n\n\texports['default'] = QUnit;\n\n\texports.module = module;\n\texports.test = test;\n\texports.skip = skip;\n\n});"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;","file":"ember-qunit.amd.js"}