// ========================================================================== // SC.Statechart Unit Test // ========================================================================== /*globals SC TestState */

TestState = null; var obj, MixinA, MixinB, stateA, stateB, stateC;

module(“SC.State.plugin: Mixin Tests”, {

setup: function() {

  MixinA = {
    isMixinA: YES
  };

  MixinB = {
    isMixinB: YES
  };

  TestState = SC.State.extend({
    isTestState: YES
  });

  obj = SC.Object.create(SC.StatechartManager, {

    initialState: 'stateA',

    stateA: SC.State.plugin('TestState'),

    stateB: SC.State.plugin('TestState', MixinA),

    stateC: SC.State.plugin('TestState', MixinA, MixinB)

  });

  stateA = obj.getState('stateA');
  stateB = obj.getState('stateB');
  stateC = obj.getState('stateC');

},

teardown: function() {
  obj = TestState = MixinA = MixinB = null;
  stateA = stateB = stateC = null;
}

});

test(“check plugin state A”, function() {

ok(SC.kindOf(stateA, TestState));
ok(stateA.get('isTestState'));
ok(!stateA.get('isMixinA'));
ok(!stateA.get('isMixinB'));

});

test(“check plugin state B”, function() {

ok(SC.kindOf(stateB, TestState));
ok(stateB.get('isTestState'));
ok(stateB.get('isMixinA'));
ok(!stateB.get('isMixinB'));

});

test(“check plugin state C”, function() {

ok(SC.kindOf(stateC, TestState));
ok(stateC.get('isTestState'));
ok(stateC.get('isMixinA'));
ok(stateC.get('isMixinB'));

});