/
BuildTower.js
53 lines (48 loc) · 1.22 KB
/
BuildTower.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Build Tower
// Build a pyramid-shaped tower, as an array/list of strings, given a positive integer
// number of floors. A tower block is represented with "*" character.
/**
* @param {number} nFloors
* @returns {string[]}
*/
String.padStart
String.padEnd
function towerBuilder(nFloors) {
let block = "*";
for (let i = 0; i < nFloors; i++) {
obj = block.repeat(2 * nFloors - 1);
console.log(obj);
return obj;
}
console.log(obj);
return obj;
}
// Mine property-based tests
/**
* @param {number} n
*/
function checkProps(n) {
let result = towerBuilder(n);
Test.assertEquals(result.length, n);
result.forEach((element) => {
Test.assertEquals(element.length, 2 * n - 1);
});
Test.assertNotContains(result[result.length - 1], " ");
result.forEach((element) => {
Test.assertContains(element, "*");
});
}
//Codewars tests
const Test = require("@codewars/test-compat");
describe("Tests", () => {
it("test", () => {
Test.assertDeepEquals(towerBuilder(1), ["*"]);
Test.assertDeepEquals(towerBuilder(2), [" * ", "***"]);
Test.assertDeepEquals(towerBuilder(3), [" * ", " *** ", "*****"]);
});
it("properties", () => {
for (let i = 1; i < 11; i++) {
checkProps(i);
}
});
});