UNPKG

phaser

Version:

A fast, free and fun HTML5 Game Framework for Desktop and Mobile web browsers from the team at Phaser Studio Inc.

99 lines (87 loc) 3.87 kB
var IsSizePowerOfTwo = require('../../../src/math/pow2/IsSizePowerOfTwo'); describe('Phaser.Math.Pow2.IsSize', function () { it('should return true when both width and height are powers of two', function () { expect(IsSizePowerOfTwo(1, 1)).toBe(true); expect(IsSizePowerOfTwo(2, 2)).toBe(true); expect(IsSizePowerOfTwo(4, 4)).toBe(true); expect(IsSizePowerOfTwo(8, 8)).toBe(true); expect(IsSizePowerOfTwo(16, 16)).toBe(true); expect(IsSizePowerOfTwo(32, 32)).toBe(true); expect(IsSizePowerOfTwo(64, 64)).toBe(true); expect(IsSizePowerOfTwo(128, 128)).toBe(true); expect(IsSizePowerOfTwo(256, 256)).toBe(true); expect(IsSizePowerOfTwo(512, 512)).toBe(true); expect(IsSizePowerOfTwo(1024, 1024)).toBe(true); expect(IsSizePowerOfTwo(2048, 2048)).toBe(true); expect(IsSizePowerOfTwo(4096, 4096)).toBe(true); }); it('should return true when width and height are different powers of two', function () { expect(IsSizePowerOfTwo(2, 4)).toBe(true); expect(IsSizePowerOfTwo(4, 2)).toBe(true); expect(IsSizePowerOfTwo(16, 32)).toBe(true); expect(IsSizePowerOfTwo(128, 256)).toBe(true); expect(IsSizePowerOfTwo(512, 1024)).toBe(true); expect(IsSizePowerOfTwo(1, 4096)).toBe(true); }); it('should return false when width is not a power of two', function () { expect(IsSizePowerOfTwo(3, 4)).toBe(false); expect(IsSizePowerOfTwo(5, 8)).toBe(false); expect(IsSizePowerOfTwo(6, 16)).toBe(false); expect(IsSizePowerOfTwo(100, 128)).toBe(false); expect(IsSizePowerOfTwo(255, 256)).toBe(false); }); it('should return false when height is not a power of two', function () { expect(IsSizePowerOfTwo(4, 3)).toBe(false); expect(IsSizePowerOfTwo(8, 5)).toBe(false); expect(IsSizePowerOfTwo(16, 6)).toBe(false); expect(IsSizePowerOfTwo(128, 100)).toBe(false); expect(IsSizePowerOfTwo(256, 255)).toBe(false); }); it('should return false when neither width nor height are powers of two', function () { expect(IsSizePowerOfTwo(3, 3)).toBe(false); expect(IsSizePowerOfTwo(5, 7)).toBe(false); expect(IsSizePowerOfTwo(100, 200)).toBe(false); expect(IsSizePowerOfTwo(300, 400)).toBe(false); }); it('should return false when width is zero', function () { expect(IsSizePowerOfTwo(0, 4)).toBe(false); }); it('should return false when height is zero', function () { expect(IsSizePowerOfTwo(4, 0)).toBe(false); }); it('should return false when both width and height are zero', function () { expect(IsSizePowerOfTwo(0, 0)).toBe(false); }); it('should return false when width is negative', function () { expect(IsSizePowerOfTwo(-1, 4)).toBe(false); expect(IsSizePowerOfTwo(-4, 4)).toBe(false); expect(IsSizePowerOfTwo(-16, 16)).toBe(false); }); it('should return false when height is negative', function () { expect(IsSizePowerOfTwo(4, -1)).toBe(false); expect(IsSizePowerOfTwo(4, -4)).toBe(false); expect(IsSizePowerOfTwo(16, -16)).toBe(false); }); it('should return false for floating point values that are not integers', function () { // Bitwise operators in JavaScript truncate floats to integers, // so 2.5 behaves as 2 (a power of two) and 1.5 behaves as 1. expect(IsSizePowerOfTwo(2.5, 4)).toBe(true); expect(IsSizePowerOfTwo(4, 2.5)).toBe(true); expect(IsSizePowerOfTwo(1.5, 1.5)).toBe(true); // Floats that truncate to non-powers-of-two still return false expect(IsSizePowerOfTwo(3.9, 4)).toBe(false); expect(IsSizePowerOfTwo(4, 3.9)).toBe(false); }); });