var assert = require("assert") var vec2 = require("../public/assets/javascripts/rectangles/models/vec2.js") var Rect = require("../public/assets/javascripts/rectangles/models/rect.js") var Surface = require("../public/assets/javascripts/rectangles/models/surface.js") // [[1 3] [0 4]] front back left right // [[3 4] [2 4]] front back left right // [[4 5] [0 4]] front back left right describe('basic surface', function(){ var surface = new Surface () surface.add( new Rect( new vec2(1, 5), new vec2(0, 4) ) ) var small = new vec2(2, 2) var oblong = new vec2(4, 1) // describe placement // describe dragging up (clamp at top edge) // describe dragging down (clamp at bottom edge) // describe dragging left (clamp at left edge) // describe dragging right (clamp at right edge) }) describe('triple surface', function(){ var surface = new Surface () surface.add( new Rect( new vec2(1, 3), new vec2(0, 4) ) ) surface.add( new Rect( new vec2(3, 5), new vec2(0, 4) ) ) var small = new vec2(2, 2) var oblong = new vec2(4, 1) // describe placement // describe dragging up (clamp at top edge) // describe dragging down (clamp at bottom edge) // describe dragging left (clamp at left edge) // describe dragging right (clamp at right edge) }) describe('two-level surface', function(){ var surface = new Surface () surface.add( new Rect( new vec2(1, 3), new vec2(0, 4) ) ) surface.add( new Rect( new vec2(3, 5), new vec2(0, 6) ) ) var small = new vec2(2, 2) var oblong = new vec2(4, 1) // describe placement/centering // describe dragging up (clamp at top edge) // describe dragging down (clamp at bottom edge) // describe dragging left (clamp at left edge) // describe dragging right (clamp at right edge) // describe dragging up and right (clamp at top edge, then pop into peninsula space) }) describe('door surface', function(){ var surface = new Surface () surface.add( new Rect( new vec2(1, 3), new vec2(0, 4) ) ) surface.add( new Rect( new vec2(3, 4), new vec2(2, 4) ) ) surface.add( new Rect( new vec2(4, 6), new vec2(0, 4) ) ) var small = new vec2(2, 2) var large = new vec2(10, 10) var oblong = new vec2(4, 1) describe('#fits()', function(){ it("fits something small", function(){ assert.equal(true, !! surface.fits(small)) }) it("doesn't fit something large", function(){ assert.equal(false, !! surface.fits(large)) }) it("fits something oblong", function(){ assert.equal(true, !! surface.fits(oblong)) }) }) describe('#fits_scale()', function(){ it("fits something large, scaled down", function(){ assert.equal(true, !! surface.fits_scale(large, 0.1)) }) it("doesn't fit something small, scaled up", function(){ assert.equal(false, !! surface.fits_scale(small, 10)) }) it("doesn't fit something oblong, scaled up", function(){ assert.equal(false, !! surface.fits_scale(oblong, 10)) }) }) describe('#place()', function(){ it("fits a small element on the top left", function(){ var bounds = surface.place(small, new vec2(1,3)) // console.log(bounds) }) it("places a small element on the right", function(){ var bounds = surface.place(small, new vec2(4,6)) // console.log(bounds) }) }) describe('#clamp()', function(){ it("", function(){ }) }) })