topical media & game development

talk show tell print

mobile-sugar-test-DivSugarTest.js / js



  (function() {
    'use strict';
  
    module('DivSugar');
  
    test('constants', function() {
      strictEqual(DivSugar.VERSION, '1.2.0');
      strictEqual(DivSugar.EPSILON, 0.0001);
      strictEqual(DivSugar.NUM_OF_DIGITS, 4);
      strictEqual(DivSugar.DEG_TO_RAD * 180, Math.PI);
      strictEqual(DivSugar.RAD_TO_DEG * Math.PI, 180);
    });
  
    test('properties', function() {
      strictEqual(DivSugar.rootTask instanceof DivSugar.Task, true);
    });
  
    test('getFrameCount', function() {
      var frameCount1 = DivSugar.getFrameCount();
      ok(frameCount1 >= 0);
  
      setTimeout(function() {
        var frameCount2 = DivSugar.getFrameCount();
        start();
        ok(frameCount2 > frameCount1);
      }, 100);
      stop();
    });
  
    test('getKeyState', function() {
      strictEqual(typeof DivSugar.getKeyState(64, 'on'), 'boolean');
      strictEqual(typeof DivSugar.getKeyState(64, 'off'), 'boolean');
      strictEqual(typeof DivSugar.getKeyState(64, 'pressed'), 'boolean');
      strictEqual(typeof DivSugar.getKeyState(64, 'released'), 'boolean');
  
      raises(function() {
        DivSugar.getKeyState(64, 'dummy');
      }, function(e) {
        strictEqual(e, "DivSugar: Unknown key state 'dummy'");
        return true;
      });
    });
  
    test('getMouseX and getMouseY', function() {
      strictEqual(typeof DivSugar.getMouseX(), 'number');
      strictEqual(typeof DivSugar.getMouseY(), 'number');
    });
  
    test('getMouseState', function() {
      strictEqual(typeof DivSugar.getMouseState(0, 'on'), 'boolean');
      strictEqual(typeof DivSugar.getMouseState(0, 'off'), 'boolean');
      strictEqual(typeof DivSugar.getMouseState(0, 'pressed'), 'boolean');
      strictEqual(typeof DivSugar.getMouseState(0, 'released'), 'boolean');
  
      raises(function() {
        DivSugar.getMouseState(0, 'dummy');
      }, function(e) {
        strictEqual(e, "DivSugar: Unknown mouse state 'dummy'");
        return true;
      });
    });
  
    test('inherit', function() {
      function Class1(a, b) {
        this.a = a;
        this.b = b;
        this.c = 123;
      }
      Class1.prototype.getValue = function() { return this.c; };
  
      function Class2(a, b) {
        this.constructor.uber.constructor(a * 10, b * 10);
        this.d = 456;
      }
      DivSugar.inherit(Class2, Class1);
      Class2.prototype.getValue = function() { return this.d; };
      Class2.prototype.getParentValue = function() { return this.constructor.uber.getValue(); };
  
      var ins1 = new Class1(1, 2);
      strictEqual(ins1.a, 1);
      strictEqual(ins1.b, 2);
      strictEqual(ins1.c, 123);
      strictEqual(ins1.getValue(), 123);
  
      var ins2 = new Class2(1, 2);
      strictEqual(ins2.a, 10);
      strictEqual(ins2.b, 20);
      strictEqual(ins2.c, 123);
      strictEqual(ins2.getValue(), 456);
      strictEqual(ins2.getParentValue(), 123);
  
      ok(DivSugar.inherit(Class2, Class1).inherit(Class2, Class1));
    });
  
    test('generateId', function() {
      strictEqual(DivSugar.generateId(), '_divsugar_id_1');
      strictEqual(DivSugar.generateId(), '_divsugar_id_2');
      strictEqual(DivSugar.generateId(), '_divsugar_id_3');
    });
  
    test('getImageSize', function() {
      DivSugar.getImageSize('../examples/assets/coin.png', function(width, height) {
        start();
        strictEqual(width, 400);
        strictEqual(height, 200);
      });
      stop();
  
      ok(DivSugar.getImageSize('', function() {}).getImageSize('', function() {}));
    });
  
    test('getCSSColor', function() {
      strictEqual(DivSugar.getCSSColor(16, 17, 18), '#101112');
      strictEqual(DivSugar.getCSSColor(10.1, 10.2, 10.3), '#0a0a0a');
      strictEqual(DivSugar.getCSSColor(10.7, 10.8, 10.9), '#0b0b0b');
      strictEqual(DivSugar.getCSSColor(-1, -2, -3), '#000000');
      strictEqual(DivSugar.getCSSColor(301, 302, 303), '#ffffff');
    });
  })();
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.