Skip to content

Commit 02faff2

Browse files
author
Steve Thompson
committed
added tests
1 parent 52e1aa7 commit 02faff2

File tree

8 files changed

+256
-157
lines changed

8 files changed

+256
-157
lines changed

dist/PublicArray.d.ts

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import { PublicArrayContent } from '@writetome51/public-array-content';
2+
3+
4+
/***********************
5+
This class is for general array manipulation. It's called PublicArray because it
6+
contains an array in a public property: 'data' .
7+
8+
The main reason you would use this class is if you hate JavaScript's built-in Array
9+
methods, like .slice(), .splice(), .push(), and .shift(). This class has much clearer
10+
and expressive method names, and a lot more of them.
11+
12+
A few examples of usage:
13+
14+
let arr = getPublicArray([1,2,3,4,5,6]);
15+
arr.remove.tail(2); // arr.data is now [1,2,3,4]
16+
if (arr.notEmpty) arr.prepend([10]); // arr.data is now [10,1,2,3,4]
17+
**********************/
18+
19+
export declare class PublicArray extends PublicArrayContent {
20+
21+
22+
readonly copy: PublicArray; // (an independent copy of this instance).
23+
readonly filter; // PublicArrayFilter
24+
readonly getConverted; // PublicArrayGetterConverter;
25+
readonly get; // PublicArrayGetter;
26+
readonly getAndRemove; // PublicArrayGetterRemover;
27+
readonly insert; // PublicArrayInserter;
28+
readonly remove; // PublicArrayRemover;
29+
readonly replace; // PublicArrayReplacer;
30+
readonly sort; // PublicArraySorter;
31+
32+
33+
private _filter; // PublicArrayFilter
34+
private _getConverted; // PublicArrayGetterConverter
35+
private _get; // PublicArrayGetter;
36+
private _getAndRemove; // PublicArrayGetterRemover;
37+
private _insert; // PublicArrayInserter;
38+
private _remove; // PublicArrayRemover;
39+
private _replace; // PublicArrayReplacer;
40+
private _sort; // PublicArraySorter;
41+
42+
43+
constructor(data?: any[]);
44+
45+
46+
append(values: any[]): this;
47+
48+
49+
prepend(values: any[]): this;
50+
51+
52+
forEach(
53+
iterationFunction: (currentValue: any, currentIndex?: number, entireArray?: any[]) => any
54+
): this;
55+
56+
57+
set(newArray: any[]): this;
58+
}

dist/privy/PublicArray.js renamed to dist/PublicArray.js

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,11 @@ var public_array_content_1 = require("@writetome51/public-array-content");
3333
**********************/
3434
var PublicArray = /** @class */ (function (_super) {
3535
__extends(PublicArray, _super);
36-
// Public Properties:
37-
// readonly copy: PublicArray (an independent copy of this instance).
38-
// Lazy-Loading is used to instantiate these properties:
39-
// readonly filter: PublicArrayFilter;
40-
// readonly getConverted: PublicArrayGetterConverter;
41-
// readonly get: PublicArrayGetter;
42-
// readonly getAndRemove: PublicArrayGetterRemover;
43-
// readonly insert: PublicArrayInserter;
44-
// readonly remove: PublicArrayRemover;
45-
// readonly replace: PublicArrayReplacer;
46-
// readonly sort: PublicArraySorter;
4736
function PublicArray(data // the actual array, represented by inherited property this.data
4837
) {
4938
if (data === void 0) { data = []; }
5039
var _this = _super.call(this, data) || this;
51-
_this._dependencyClasses = [
40+
var dependencyClasses = [
5241
{ path: '@writetome51/public-array-filter', name: 'PublicArrayFilter' },
5342
{ path: '@writetome51/public-array-getter-converter', name: 'PublicArrayGetterConverter' },
5443
{ path: '@writetome51/public-array-getter', name: 'PublicArrayGetter' },
@@ -66,7 +55,7 @@ var PublicArray = /** @class */ (function (_super) {
6655
return function () {
6756
// Lazy-Loading is used to instantiate these properties:
6857
if (!(_this["_" + property])) { // if property not set...
69-
var dependencyClass = _this._dependencyClasses[index];
58+
var dependencyClass = dependencyClasses[index];
7059
// @ts-ignore
7160
var modul = require(dependencyClass.path);
7261
_this["_" + property] = di_factory_1.DIFactory.getInstance(modul[dependencyClass.name]);

dist/index.d.ts

Lines changed: 0 additions & 6 deletions
This file was deleted.

dist/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ var public_array_inserter_1 = require("@writetome51/public-array-inserter");
99
var public_array_remover_1 = require("@writetome51/public-array-remover");
1010
var public_array_replacer_1 = require("@writetome51/public-array-replacer");
1111
var public_array_sorter_1 = require("@writetome51/public-array-sorter");
12-
var PublicArray_1 = require("./privy/PublicArray");
12+
var PublicArray_1 = require("./PublicArray");
1313
di_factory_1.DIFactory.register({
1414
class: PublicArray_1.PublicArray,
1515
dependencies: [

dist/privy/PublicArray.d.ts

Lines changed: 0 additions & 80 deletions
This file was deleted.

dist/tests.js

Lines changed: 98 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,116 @@
11
"use strict";
22
Object.defineProperty(exports, "__esModule", { value: true });
33
var arrays_match_1 = require("@writetome51/arrays-match");
4-
var PublicArray_1 = require("./privy/PublicArray");
4+
var PublicArray_1 = require("./PublicArray");
55
var arr = new PublicArray_1.PublicArray([1, 2, 3, 4, 5, 6, 7, 8, 9]);
6-
// Test 1: getPublicArray() must return instance of PublicArray:
6+
// Test 1: new PublicArray() must return instance of PublicArray:
77
if (arr.className && arr.className === 'PublicArray')
88
console.log('test 1 passed');
99
else
1010
console.log('test 1 FAILED');
11-
//Test 1A: the instance must contain the array passed into getPublicArray():
11+
//Test 1A: the instance must contain the array passed into new PublicArray():
1212
if (arrays_match_1.arraysMatch(arr.data, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
1313
console.log('test 1A passed');
1414
else
1515
console.log('test 1A FAILED');
16-
// Test 2: PublicArray.filter must be instance of PublicArrayFilter:
16+
// Test 2: arr.filter must be instance of PublicArrayFilter:
1717
if (arr.filter.className && arr.filter.className === 'PublicArrayFilter')
1818
console.log('test 2 passed');
1919
else
2020
console.log('test 2 FAILED');
21-
/*******************
22-
23-
24-
25-
26-
// Test 2A: the instance must contain the array passed into getPublicArray():
27-
if (arraysMatch(arr.data, [1, 2, 3, 4, 5, 6, 7, 8, 9])) console.log('test 1A passed');
28-
else console.log('test 1A FAILED');
29-
*******************/
30-
/*********
31-
console.log(
32-
arr.remove
33-
.byIndexes([0, 2, 4, 6])
34-
.data
35-
);// [2, 4, 6, 8, 9]
36-
************/
21+
// Test 2A: arr.filter.data must match arr.data:
22+
if (arrays_match_1.arraysMatch(arr.filter.data, arr.data))
23+
console.log('test 2A passed');
24+
else
25+
console.log('test 2A FAILED');
26+
// Test 2B: arr.data must remain in-sync with arr.filter.data after calling an arr.filter method:
27+
arr.filter.byTest(function (item) { return (item % 2 === 0); });
28+
if (arrays_match_1.arraysMatch(arr.filter.data, arr.data))
29+
console.log('test 2B passed');
30+
else
31+
console.log('test 2B FAILED');
32+
// Test 3: arr.getConverted must be instance of PublicArrayGetterConverter:
33+
if (arr.getConverted.className && arr.getConverted.className === 'PublicArrayGetterConverter')
34+
console.log('test 3 passed');
35+
else
36+
console.log('test 3 FAILED');
37+
// Test 3A: arr.getConverted.data must match arr.data:
38+
if (arrays_match_1.arraysMatch(arr.getConverted.data, arr.data))
39+
console.log('test 3A passed');
40+
else
41+
console.log('test 3A FAILED');
42+
// Test 3B: arr.data must remain in-sync with arr.getConverted.data after calling an arr.getConverted
43+
// method:
44+
arr.getConverted.each(function (item) { return (item * 2); });
45+
if (arrays_match_1.arraysMatch(arr.getConverted.data, arr.data))
46+
console.log('test 3B passed');
47+
else
48+
console.log('test 3B FAILED');
49+
// Test 4: arr.get must be instance of PublicArrayGetter:
50+
if (arr.get.className && arr.get.className === 'PublicArrayGetter')
51+
console.log('test 4 passed');
52+
else
53+
console.log('test 4 FAILED');
54+
// Test 4A: arr.get.data must match arr.data:
55+
if (arrays_match_1.arraysMatch(arr.get.data, arr.data))
56+
console.log('test 4A passed');
57+
else
58+
console.log('test 4A FAILED');
59+
// Test 4B: arr.data must remain in-sync with arr.get.data after calling an arr.get method:
60+
arr.get.byIndexes([0, 2]);
61+
if (arrays_match_1.arraysMatch(arr.get.data, arr.data))
62+
console.log('test 4B passed');
63+
else
64+
console.log('test 4B FAILED');
65+
// Test 5: arr.getAndRemove must be instance of PublicArrayGetterRemover:
66+
if (arr.getAndRemove.className && arr.getAndRemove.className === 'PublicArrayGetterRemover')
67+
console.log('test 5 passed');
68+
else
69+
console.log('test 5 FAILED');
70+
// Test 5A: arr.getAndRemove.data must match arr.data:
71+
if (arrays_match_1.arraysMatch(arr.getAndRemove.data, arr.data))
72+
console.log('test 5A passed');
73+
else
74+
console.log('test 5A FAILED');
75+
// Test 5B: arr.data must remain in-sync with arr.getAndRemove.data after calling an arr.getAndRemove
76+
// method:
77+
arr.getAndRemove.byIndexes([0, 2]);
78+
if (arrays_match_1.arraysMatch(arr.getAndRemove.data, arr.data))
79+
console.log('test 5B passed');
80+
else
81+
console.log('test 5B FAILED');
82+
// Test 6: arr.insert must be instance of PublicArrayInserter:
83+
if (arr.insert.className && arr.insert.className === 'PublicArrayInserter')
84+
console.log('test 6 passed');
85+
else
86+
console.log('test 6 FAILED');
87+
// Test 6A: arr.insert.data must match arr.data:
88+
if (arrays_match_1.arraysMatch(arr.insert.data, arr.data))
89+
console.log('test 6A passed');
90+
else
91+
console.log('test 6A FAILED');
92+
// Test 6B: arr.data must remain in-sync with arr.insert.data after calling an arr.insert method:
93+
arr.insert.at(1, ['h']);
94+
if (arrays_match_1.arraysMatch(arr.insert.data, arr.data))
95+
console.log('test 6B passed');
96+
else
97+
console.log('test 6B FAILED');
98+
// Test 7: arr.remove must be instance of PublicArrayRemover:
99+
if (arr.remove.className && arr.remove.className === 'PublicArrayRemover')
100+
console.log('test 7 passed');
101+
else
102+
console.log('test 7 FAILED');
103+
// Test 7A: arr.remove.data must match arr.data:
104+
if (arrays_match_1.arraysMatch(arr.remove.data, arr.data))
105+
console.log('test 7A passed');
106+
else
107+
console.log('test 7A FAILED');
108+
// Test 7B: arr.data must remain in-sync with arr.remove.data after calling an arr.remove method:
109+
arr.remove.firstOf('h');
110+
if (arrays_match_1.arraysMatch(arr.remove.data, arr.data))
111+
console.log('test 7B passed');
112+
else
113+
console.log('test 7B FAILED');
37114
/****************
38115
39116
@@ -74,4 +151,4 @@ else
74151
console.log(arr.sort.shuffle());
75152
76153
console.log(arr.sort);
77-
*************/
154+
*************/

lib/privy/PublicArray.ts renamed to lib/PublicArray.ts

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,18 @@ import { PublicArrayContent } from '@writetome51/public-array-content';
2222

2323
export class PublicArray extends PublicArrayContent {
2424

25-
private _dependencyClasses: { path: string, name: string }[];
25+
26+
// readonly copy: PublicArray (an independent copy of this instance).
27+
readonly filter; // PublicArrayFilter
28+
readonly getConverted; // PublicArrayGetterConverter;
29+
readonly get; // PublicArrayGetter;
30+
readonly getAndRemove; // PublicArrayGetterRemover;
31+
readonly insert; // PublicArrayInserter;
32+
readonly remove; // PublicArrayRemover;
33+
readonly replace; // PublicArrayReplacer;
34+
readonly sort; // PublicArraySorter;
35+
36+
2637
private _filter; // PublicArrayFilter
2738
private _getConverted; // PublicArrayGetterConverter
2839
private _get; // PublicArrayGetter
@@ -33,28 +44,13 @@ export class PublicArray extends PublicArrayContent {
3344
private _sort; // PublicArraySorter
3445

3546

36-
// Public Properties:
37-
38-
// readonly copy: PublicArray (an independent copy of this instance).
39-
40-
// Lazy-Loading is used to instantiate these properties:
41-
// readonly filter: PublicArrayFilter;
42-
// readonly getConverted: PublicArrayGetterConverter;
43-
// readonly get: PublicArrayGetter;
44-
// readonly getAndRemove: PublicArrayGetterRemover;
45-
// readonly insert: PublicArrayInserter;
46-
// readonly remove: PublicArrayRemover;
47-
// readonly replace: PublicArrayReplacer;
48-
// readonly sort: PublicArraySorter;
49-
50-
5147
constructor(
5248
data = [] // the actual array, represented by inherited property this.data
5349
) {
5450

5551
super(data);
5652

57-
this._dependencyClasses = [
53+
let dependencyClasses = [
5854
{path: '@writetome51/public-array-filter', name: 'PublicArrayFilter'},
5955
{path: '@writetome51/public-array-getter-converter', name: 'PublicArrayGetterConverter'},
6056
{path: '@writetome51/public-array-getter', name: 'PublicArrayGetter'},
@@ -74,7 +70,7 @@ export class PublicArray extends PublicArrayContent {
7470
return () => {
7571
// Lazy-Loading is used to instantiate these properties:
7672
if (!(this[`_${property}`])) { // if property not set...
77-
let dependencyClass = this._dependencyClasses[index];
73+
let dependencyClass = dependencyClasses[index];
7874
// @ts-ignore
7975
let modul = require(dependencyClass.path);
8076
this[`_${property}`] = DIFactory.getInstance(modul[dependencyClass.name]);
@@ -117,4 +113,3 @@ export class PublicArray extends PublicArrayContent {
117113

118114

119115
}
120-

0 commit comments

Comments
 (0)