[ { "name": "one square metre of half-brick wall is the trade's 60 bricks", "args": [ 1, 1, [], 1, 0 ], "expect": { "netAreaSquareMetres": 1, "bricks": 60, "mortarCubicMetres": 0.018 } }, { "name": "a wall with a door and a window, 5 percent wastage", "args": [ 10, 2.4, [ { "width": 0.9, "height": 2.1 }, { "width": 1.2, "height": 1.05 } ], 1, 500 ], "expect": { "netAreaSquareMetres": 20.85, "bricks": 1298, "mortarCubicMetres": 0.387 } }, { "name": "a one-brick wall is 119 bricks a square metre, not 120, and adds a collar joint", "args": [ 1, 1, [], 2, 0 ], "expect": { "netAreaSquareMetres": 1, "bricks": 119, "mortarCubicMetres": 0.046 } }, { "name": "exactly 100 bricks plus 10 percent is exactly 110", "args": [ 2.25, 0.75, [], 1, 1000 ], "expect": { "netAreaSquareMetres": 1.6875, "bricks": 110, "mortarCubicMetres": 0.033 } }, { "name": "a garden wall that comes out to exactly 336 bricks with wastage", "args": [ 6, 0.9, [], 1, 500 ], "expect": { "netAreaSquareMetres": 5.4, "bricks": 336, "mortarCubicMetres": 0.101 } }, { "name": "three skins", "args": [ 1, 1, [], 3, 0 ], "expect": { "netAreaSquareMetres": 1, "bricks": 178, "mortarCubicMetres": 0.073 } }, { "name": "dimensions are taken to the nearest millimetre", "args": [ 3.0004, 1, [], 1, 0 ], "expect": { "netAreaSquareMetres": 3, "bricks": 178, "mortarCubicMetres": 0.053 } }, { "name": "an opening the size of the wall leaves nothing to build", "args": [ 2, 1, [ { "width": 2, "height": 1 } ], 1, 500 ], "expect": { "netAreaSquareMetres": 0, "bricks": 0, "mortarCubicMetres": 0 } }, { "name": "openings larger than the wall are an error", "args": [ 2, 1, [ { "width": 1.5, "height": 1.5 } ], 1, 0 ], "expectError": "openings are larger than the wall" }, { "name": "no skins is an error", "args": [ 1, 1, [], 0, 0 ], "expectError": "skins must be a whole number from 1 to 4" }, { "name": "five skins is an error", "args": [ 1, 1, [], 5, 0 ], "expectError": "skins must be a whole number from 1 to 4" }, { "name": "a fractional skin count is an error", "args": [ 1, 1, [], 1.5, 0 ], "expectError": "skins must be a whole number from 1 to 4" }, { "name": "a zero-length wall is an error", "args": [ 0, 1, [], 1, 0 ], "expectError": "wallLength must be a finite number greater than 0 and at most 1000 metres" }, { "name": "a wall over 100 metres high is an error", "args": [ 5, 101, [], 1, 0 ], "expectError": "wallHeight must be a finite number greater than 0 and at most 100 metres" }, { "name": "a negative opening is an error", "args": [ 5, 2, [ { "width": -1, "height": 1 } ], 1, 0 ], "expectError": "opening 1: width must be a finite number greater than 0 and at most 1000 metres" }, { "name": "negative wastage is an error", "args": [ 1, 1, [], 1, -1 ], "expectError": "wastageBasisPoints must be a whole number from 0 to 10000" }, { "name": "fractional wastage is an error", "args": [ 1, 1, [], 1, 2.5 ], "expectError": "wastageBasisPoints must be a whole number from 0 to 10000" } ]