Skip to content

Commit 47c1fe6

Browse files
committed
added tests for sylvester, rowand column. Removed unnecesary changes.
1 parent c6fc802 commit 47c1fe6

File tree

6 files changed

+87
-35
lines changed

6 files changed

+87
-35
lines changed

src/expression/transform/column.transform.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { createColumn } from '../../function/matrix/column.js'
44
import { isNumber } from '../../utils/is.js'
55

66
const name = 'column'
7-
const dependencies = ['typed', 'Index', 'matrix', 'range', 'config']
7+
const dependencies = ['typed', 'Index', 'matrix', 'range']
88

99
/**
1010
* Attach a transform function to matrix.column
@@ -13,8 +13,8 @@ const dependencies = ['typed', 'Index', 'matrix', 'range', 'config']
1313
* This transform changed the last `index` parameter of function column
1414
* from zero-based to one-based
1515
*/
16-
export const createColumnTransform = /* #__PURE__ */ factory(name, dependencies, ({ typed, Index, matrix, range, config }) => {
17-
const column = createColumn({ typed, Index, matrix, range, config })
16+
export const createColumnTransform = /* #__PURE__ */ factory(name, dependencies, ({ typed, Index, matrix, range }) => {
17+
const column = createColumn({ typed, Index, matrix, range })
1818

1919
// @see: comment of column itself
2020
return typed('column', {

src/expression/transform/row.transform.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { errorTransform } from './utils/errorTransform.js'
44
import { isNumber } from '../../utils/is.js'
55

66
const name = 'row'
7-
const dependencies = ['typed', 'Index', 'matrix', 'range', 'config']
7+
const dependencies = ['typed', 'Index', 'matrix', 'range']
88

99
/**
1010
* Attach a transform function to matrix.column
@@ -13,8 +13,8 @@ const dependencies = ['typed', 'Index', 'matrix', 'range', 'config']
1313
* This transform changed the last `index` parameter of function column
1414
* from zero-based to one-based
1515
*/
16-
export const createRowTransform = /* #__PURE__ */ factory(name, dependencies, ({ typed, Index, matrix, range, config }) => {
17-
const row = createRow({ typed, Index, matrix, range, config })
16+
export const createRowTransform = /* #__PURE__ */ factory(name, dependencies, ({ typed, Index, matrix, range }) => {
17+
const row = createRow({ typed, Index, matrix, range })
1818

1919
// @see: comment of row itself
2020
return typed('row', {

src/function/algebra/sylvester.js

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ const dependencies = [
1616
'subtract',
1717
'identity',
1818
'lusolve',
19-
'abs',
20-
'config'
19+
'abs'
2120
]
2221

2322
export const createSylvester = /* #__PURE__ */ factory(name, dependencies, (
@@ -94,10 +93,6 @@ export const createSylvester = /* #__PURE__ */ factory(name, dependencies, (
9493
}
9594
})
9695
function _sylvester (A, B, C) {
97-
// chek if legacySubset is enabled and disable it temporarily
98-
const originalConfigForLegacySubset = config().legacySubset
99-
if (originalConfigForLegacySubset) config({ legacySubset: false })
100-
10196
const n = B.size()[0]
10297
const m = A.size()[0]
10398

@@ -145,9 +140,6 @@ export const createSylvester = /* #__PURE__ */ factory(name, dependencies, (
145140
}
146141
const Y = matrix(matrixFromColumns(...y))
147142
const X = multiply(U, multiply(Y, transpose(V)))
148-
149-
// restore original config for legacySubset
150-
if (originalConfigForLegacySubset) config({ legacySubset: true })
151143
return X
152144
}
153145
})

src/function/matrix/column.js

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import { clone } from '../../utils/object.js'
44
import { validateIndex } from '../../utils/array.js'
55

66
const name = 'column'
7-
const dependencies = ['typed', 'Index', 'matrix', 'range', 'config']
7+
const dependencies = ['typed', 'Index', 'matrix', 'range']
88

9-
export const createColumn = /* #__PURE__ */ factory(name, dependencies, ({ typed, Index, matrix, range, config }) => {
9+
export const createColumn = /* #__PURE__ */ factory(name, dependencies, ({ typed, Index, matrix, range }) => {
1010
/**
1111
* Return a column from a Matrix.
1212
*
@@ -48,19 +48,11 @@ export const createColumn = /* #__PURE__ */ factory(name, dependencies, ({ typed
4848
throw new Error('Only two dimensional matrix is supported')
4949
}
5050

51-
// chek if legacySubset is enabled and disable it temporarily
52-
const originalConfigForLegacySubset = config().legacySubset
53-
if (originalConfigForLegacySubset) config({ legacySubset: false })
54-
5551
validateIndex(column, value.size()[1])
5652

5753
const rowRange = range(0, value.size()[0])
5854
const index = new Index(rowRange, [column])
5955
const result = value.subset(index)
60-
61-
// restore original config for legacySubset
62-
if (originalConfigForLegacySubset) config({ legacySubset: true })
63-
6456
return isMatrix(result)
6557
? result
6658
: matrix([[result]])

src/function/matrix/row.js

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import { clone } from '../../utils/object.js'
44
import { validateIndex } from '../../utils/array.js'
55

66
const name = 'row'
7-
const dependencies = ['typed', 'Index', 'matrix', 'range', 'config']
7+
const dependencies = ['typed', 'Index', 'matrix', 'range']
88

9-
export const createRow = /* #__PURE__ */ factory(name, dependencies, ({ typed, Index, matrix, range, config }) => {
9+
export const createRow = /* #__PURE__ */ factory(name, dependencies, ({ typed, Index, matrix, range }) => {
1010
/**
1111
* Return a row from a Matrix.
1212
*
@@ -47,19 +47,12 @@ export const createRow = /* #__PURE__ */ factory(name, dependencies, ({ typed, I
4747
if (value.size().length !== 2) {
4848
throw new Error('Only two dimensional matrix is supported')
4949
}
50-
// chek if legacySubset is enabled and disable it temporarily
51-
const originalConfigForLegacySubset = config().legacySubset
52-
if (originalConfigForLegacySubset) config({ legacySubset: false })
5350

5451
validateIndex(row, value.size()[0])
5552

5653
const columnRange = range(0, value.size()[1])
5754
const index = new Index([row], columnRange)
5855
const result = value.subset(index)
59-
60-
// restore original config for legacySubset
61-
if (originalConfigForLegacySubset) config({ legacySubset: true })
62-
6356
return isMatrix(result)
6457
? result
6558
: matrix([[result]])

test/unit-tests/core/config.test.js

Lines changed: 76 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,49 @@ describe('config', function () {
6262
assert.deepStrictEqual(math2.subset(A, index(1, [1, 2])).toArray(), [[5, 6]])
6363
assert.deepStrictEqual(math2.subset(A, index([0, 1], 1)).toArray(), [[2], [5]])
6464

65-
// Test without legacy syntax
65+
// test sylvester
66+
assert.ok(math2.norm(math2.subtract(math2.sylvester([
67+
[-5.3, -1.4, -0.2, 0.7],
68+
[-0.4, -1.0, -0.1, -1.2],
69+
[0.3, 0.7, -2.5, 0.7],
70+
[3.6, -0.1, 1.4, -2.4]
71+
], [
72+
[1.1, -0.3, -0.9, 0.8, -2.5],
73+
[-0.6, 2.6, 0.2, 0.4, 1.3],
74+
[0.4, -0.5, -0.2, 0.2, -0.1],
75+
[-0.4, -1.9, -0.2, 0.5, 1.4],
76+
[0.4, -1.0, -0.1, -0.8, -1.3]
77+
], [
78+
[1.4, 1.1, -1.9, 0.1, 1.2],
79+
[-1.7, 0.1, -0.4, 2.1, 0.5],
80+
[1.9, 2.3, -0.8, -0.7, 1.0],
81+
[-1.1, 2.8, -0.8, -0.3, 0.9]
82+
]), [
83+
[-0.19393862606643053, -0.17101629636521865, 2.709348263225366, -0.0963000767188319, 0.5244718194343121],
84+
[0.38421326955977486, -0.21159588555260944, -6.544262021555474, -0.15113424769761136, -2.312533293658291],
85+
[-2.2708235174374747, 4.498279916441834, 1.4553799673144823, -0.9300926971755248, 2.5508111398452353],
86+
[-1.0935231387905004, 4.113817086842746, 5.747671819196675, -0.9408309030864932, 2.967655969930743]
87+
]), 'fro') < 1e-3)
88+
89+
const a = [
90+
[0, 2, 0, 0, 0],
91+
[0, 1, 0, 2, 4],
92+
[0, 0, 0, 0, 0],
93+
[8, 4, 0, 3, 0],
94+
[0, 0, 0, 6, 0]
95+
]
96+
// test column
97+
assert.deepStrictEqual(
98+
math2.column(a, 4).valueOf(), [[0], [4], [0], [0], [0]]
99+
)
100+
101+
// test row
102+
assert.deepStrictEqual(
103+
math2.row(a, 3).valueOf(), [[8, 4, 0, 3, 0]]
104+
)
105+
66106
math2.config({ legacySubset: false })
107+
// Test without legacy syntax
67108
assert.deepStrictEqual(math2.subset(A, index(1, 2)), 6)
68109
assert.deepStrictEqual(math2.subset(A, index([1], 2)).toArray(), [6])
69110
assert.deepStrictEqual(math2.subset(A, index(1, [2])).toArray(), [6])
@@ -73,6 +114,40 @@ describe('config', function () {
73114
assert.deepStrictEqual(math2.subset(A, index([0, 1], 1)).toArray(), [2, 5])
74115
assert.deepStrictEqual(math2.subset(A, index([0, 1], [1])).toArray(), [[2], [5]])
75116

117+
// test with conifgLegacy removed
118+
assert.ok(math2.norm(math2.subtract(math2.sylvester([
119+
[-5.3, -1.4, -0.2, 0.7],
120+
[-0.4, -1.0, -0.1, -1.2],
121+
[0.3, 0.7, -2.5, 0.7],
122+
[3.6, -0.1, 1.4, -2.4]
123+
], [
124+
[1.1, -0.3, -0.9, 0.8, -2.5],
125+
[-0.6, 2.6, 0.2, 0.4, 1.3],
126+
[0.4, -0.5, -0.2, 0.2, -0.1],
127+
[-0.4, -1.9, -0.2, 0.5, 1.4],
128+
[0.4, -1.0, -0.1, -0.8, -1.3]
129+
], [
130+
[1.4, 1.1, -1.9, 0.1, 1.2],
131+
[-1.7, 0.1, -0.4, 2.1, 0.5],
132+
[1.9, 2.3, -0.8, -0.7, 1.0],
133+
[-1.1, 2.8, -0.8, -0.3, 0.9]
134+
]), [
135+
[-0.19393862606643053, -0.17101629636521865, 2.709348263225366, -0.0963000767188319, 0.5244718194343121],
136+
[0.38421326955977486, -0.21159588555260944, -6.544262021555474, -0.15113424769761136, -2.312533293658291],
137+
[-2.2708235174374747, 4.498279916441834, 1.4553799673144823, -0.9300926971755248, 2.5508111398452353],
138+
[-1.0935231387905004, 4.113817086842746, 5.747671819196675, -0.9408309030864932, 2.967655969930743]
139+
]), 'fro') < 1e-3)
140+
141+
// test column with conifgLegacy removed
142+
assert.deepStrictEqual(
143+
math2.column(a, 4).valueOf(), [[0], [4], [0], [0], [0]]
144+
)
145+
146+
// test row with conifgLegacy removed
147+
assert.deepStrictEqual(
148+
math2.row(a, 3).valueOf(), [[8, 4, 0, 3, 0]]
149+
)
150+
76151
// Restore console.warn
77152
warnStub.restore()
78153
})

0 commit comments

Comments
 (0)