diff --git a/node-print/APKBUILD b/node-print/APKBUILD index 2a71078..119febd 100644 --- a/node-print/APKBUILD +++ b/node-print/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Patrycja Rosa # Maintainer: Patrycja Rosa pkgname=node-print -pkgver=14 +pkgver=15 pkgrel=0 pkgdesc="another terrible javascript engine wrapper" url="https://git.ddd.rip/ptrcnull/ptrcports" @@ -21,6 +21,8 @@ check() { # ensure coverage local cov_lines="$(grep -F index.js output.txt | cut -d' ' -f4 | cut -d. -f1)" [ "$cov_lines" -gt 90 ] + local cov_branches="$(grep -F index.js output.txt | cut -d' ' -f6 | cut -d. -f1)" + [ "$cov_branches" -gt 90 ] } package() { @@ -30,6 +32,6 @@ package() { sha512sums=" b3dfdeb49637be33d2e2718c5abcf35a87dd55023918c99341273c3b38bd6685189d1f786451a742c47c5f3bc3b58555decb58e2a3a018c9b9ee92043f8fac03 np -2f3c70b29b8bd3c5c357f4a3ab8bbf3c54dae5193850433310108685a53b6f089501253aa17b6695abf8c3e2944a3aadc7fccc42a3915e906f8b14df81cc610f index.js +8741fd49d035d28f93dcb417b65254fd7c60a3027287749cab11d71cbeca91ea8ae5c18fab739d5c4f90c3e0029c831a333003444b7c5ed1ef84888c97ffdae1 index.js 9b13784855f3d01b3ab89b15dce6c59949a103ed139e5d858720b064f248dd9bbeca57d7113eed818652f064714054b77a0d7d53097024ead84a21ad69d536d6 test.js " diff --git a/node-print/index.js b/node-print/index.js index 2aa63d8..9dc315d 100644 --- a/node-print/index.js +++ b/node-print/index.js @@ -26,6 +26,11 @@ String.prototype.includesAny = function(strings) { return strings.some(x => this.includes(x)) } +String.prototype.replaceAt = function(idx, str) { + if (idx > (this.length - 1) || idx < 0) throw new RangeError('idx must be in bounds of the string') + return this.substring(0, idx) + str + this.substring(idx + str.length) +} + String.prototype.tryParseJSON = function() { const str = this.trim() if ( @@ -102,6 +107,14 @@ Array.prototype.product = function(def = 1) { return this.reduce((a, b) => a * b, def) } +Array.prototype.min = function() { + return this.reduce((a, b) => Math.min(a, b)) +} + +Array.prototype.max = function() { + return this.reduce((a, b) => Math.max(a, b)) +} + Array.prototype.sortNum = function(getter = (x => x)) { return this.sort((a, b) => getter(a) - getter(b)) } diff --git a/node-print/output.txt b/node-print/output.txt deleted file mode 100644 index 62c4726..0000000 --- a/node-print/output.txt +++ /dev/null @@ -1,152 +0,0 @@ -TAP version 13 -# test output -# Subtest: Object.prototype.map -ok 1 - Object.prototype.map - --- - duration_ms: 1.898781 - ... -# Subtest: Object.prototype.apply -ok 2 - Object.prototype.apply - --- - duration_ms: 0.1012 - ... -# Subtest: String.prototype.lines -ok 3 - String.prototype.lines - --- - duration_ms: 0.668277 - ... -# Subtest: String.prototype.reverse -ok 4 - String.prototype.reverse - --- - duration_ms: 0.097609 - ... -# Subtest: String.prototype.includesAny -ok 5 - String.prototype.includesAny - --- - duration_ms: 0.157079 - ... -# Subtest: String.prototype.tryParseJSON -ok 6 - String.prototype.tryParseJSON - --- - duration_ms: 0.171079 - ... -# Subtest: Buffer.prototype.tryParseJSON -ok 7 - Buffer.prototype.tryParseJSON - --- - duration_ms: 0.15631 - ... -# Subtest: exec -ok 8 - exec - --- - duration_ms: 2.373978 - ... -# Subtest: exec.orFail -ok 9 - exec.orFail - --- - duration_ms: 1.752591 - ... -# Subtest: execnc -ok 10 - execnc - --- - duration_ms: 1.517843 - ... -# Subtest: apkindex -ok 11 - apkindex - --- - duration_ms: 218.94233 - ... -# Subtest: Array.prototype.sum -ok 12 - Array.prototype.sum - --- - duration_ms: 0.167829 - ... -# Subtest: Array.prototype.product -ok 13 - Array.prototype.product - --- - duration_ms: 0.092419 - ... -# Subtest: Array.prototype.sortNum -ok 14 - Array.prototype.sortNum - --- - duration_ms: 0.166239 - ... -# Subtest: Array.prototype.partition -ok 15 - Array.prototype.partition - --- - duration_ms: 0.223309 - ... -# Subtest: Array.prototype.chunks - size 2, length 2n -ok 16 - Array.prototype.chunks - size 2, length 2n - --- - duration_ms: 0.176819 - ... -# Subtest: Array.prototype.chunks - size 2, length 2n+1 -ok 17 - Array.prototype.chunks - size 2, length 2n+1 - --- - duration_ms: 0.12053 - ... -# Subtest: Array.prototype.transpose -ok 18 - Array.prototype.transpose - --- - duration_ms: 0.180939 - ... -# Subtest: Array.prototype.shuffle -ok 19 - Array.prototype.shuffle - --- - duration_ms: 0.189319 - ... -# Subtest: Set.prototype.union -ok 20 - Set.prototype.union - --- - duration_ms: 0.321928 - ... -# Subtest: Set.prototype.intersection -ok 21 - Set.prototype.intersection - --- - duration_ms: 0.191079 - ... -# Subtest: Set.prototype.at - single element -ok 22 - Set.prototype.at - single element - --- - duration_ms: 0.12324 - ... -# Subtest: Set.prototype.at - multiple elements -ok 23 - Set.prototype.at - multiple elements - --- - duration_ms: 0.152549 - ... -# Subtest: matrix - seed with value -ok 24 - matrix - seed with value - --- - duration_ms: 0.267349 - ... -# Subtest: matrix - seed with function -ok 25 - matrix - seed with function - --- - duration_ms: 0.167019 - ... -# Subtest: Number.prototype.toXY -ok 26 - Number.prototype.toXY - --- - duration_ms: 0.177589 - ... -# Subtest: Object.prune -ok 27 - Object.prune - --- - duration_ms: 0.153959 - ... -1..27 -# tests 27 -# suites 0 -# pass 27 -# fail 0 -# cancelled 0 -# skipped 0 -# todo 0 -# duration_ms 313.645715 -# start of coverage report -# file | line % | branch % | funcs % | uncovered lines -# index.js | 96.20 | 86.96 | 95.12 | 5, 6, 7, 171, 172, 173, 174 -# test.js | 98.82 | 96.97 | 100.00 | 107, 108, 109 -# all files | 97.72 | 90.20 | 97.22 | -# end of coverage report diff --git a/node-print/test.js b/node-print/test.js index e323b8c..5597e07 100644 --- a/node-print/test.js +++ b/node-print/test.js @@ -30,7 +30,7 @@ test('String.prototype.lines', t => { const str = 'one\ntwo\nthree\n' assert.deepEqual( ['one', 'two', 'three'], - str.lines() + str.trim().lines() ) assert.deepEqual( ['one', 'two', 'three'], @@ -50,6 +50,21 @@ test('String.prototype.includesAny', t => { assert(str.includesAny(['test'])) assert(str.includesAny(['not', 'test'])) assert(!str.includesAny(['missing'])) + assert.throws(() => str.includesAny()) + assert.throws(() => str.includesAny('a')) +}) + +test('String.prototype.replaceAt', t => { + const str = 'test string woof' + assert.equal( + 'test strong woof', + str.replaceAt(8, 'o') + ) + assert.equal( + 'test longer string', + str.replaceAt(5, 'longer string') + ) + assert.throws(() => str.replaceAt(str.length+10, 'out of bounds')) }) test('String.prototype.tryParseJSON', t => { @@ -100,6 +115,13 @@ test('execnc', t => { ) }) +test('execnc with options', t => { + assert.equal( + undefined, + execnc('echo', ['test output2'], {}).stdout + ) +}) + test('apkindex', async t => { try { await fs.access('/lib/apk/db/installed', fs.constants.R_OK) @@ -134,6 +156,20 @@ test('Array.prototype.product', t => { ) }) +test('Array.prototype.min', t => { + assert.equal( + 2, + [5, 3, 2].min() + ) +}) + +test('Array.prototype.max', t => { + assert.equal( + 5, + [5, 3, 2].max() + ) +}) + test('Array.prototype.sortNum', t => { assert.deepEqual( [2, 3, 5], @@ -178,6 +214,22 @@ test('Array.prototype.shuffle', t => { ) }) +test('Array.prototype.uniq', t => { + const arr = [ 5, 5, 3, 8, 4, 6, 7, 2, 1, 2, 8 ] + assert.deepEqual( + [ 5, 3, 8, 4, 6, 7, 2, 1 ], + arr.uniq() + ) +}) + +test('Array.prototype.lines', t => { + const arr = [ 'a', 'b', 'test' ] + assert.deepEqual( + 'a\nb\ntest', + arr.lines() + ) +}) + test('Set.prototype.union', t => { const left = new Set([1, 3]) const right = new Set([2, 4]) @@ -185,6 +237,8 @@ test('Set.prototype.union', t => { new Set([1, 2, 3, 4]), left.union(right) ) + assert.throws(() => left.union()) + assert.throws(() => left.union(3)) }) test('Set.prototype.intersection', t => { @@ -194,6 +248,8 @@ test('Set.prototype.intersection', t => { new Set([2]), left.intersection(right) ) + assert.throws(() => left.intersection()) + assert.throws(() => left.intersection(3)) }) test('Set.prototype.difference', t => { @@ -207,6 +263,8 @@ test('Set.prototype.difference', t => { new Set([4]), right.difference(left) ) + assert.throws(() => left.difference()) + assert.throws(() => left.difference(3)) }) test('Set.prototype.at - single element', t => { @@ -244,6 +302,8 @@ test('Number.prototype.toXY', t => { [ 1, 3 ], (16).toXY(5) ) + assert.throws(() => (5).toXY()) + assert.throws(() => (5).toXY([])) }) test('Object.prune', t => { @@ -258,10 +318,6 @@ test('Object.prune', t => { anotherEmptyProperty: undefined }) ) + assert.throws(() => Object.prune()) + assert.throws(() => Object.prune(5)) }) - -// test('String.prototype.reverse', t => { -// assert.equal( - -// ) -// })