-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
22 changed files
with
711 additions
and
205 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,13 @@ | ||
import { $$createSVGMatrix } from "../createSVGMatrix/createSVGMatrix.index.js"; | ||
import { $$createSVGTransformMatrix } from "../createSVGTransformMatrix/createSVGTransformMatrix.index.js"; | ||
import { $$getBaseTransformList } from "../getBaseTransformList/getBaseTransformList.index.js"; | ||
import { $$getSVG } from "../getSetSVG/getSetSVG.index.js"; | ||
|
||
export const $$initMatrixTransform = ($svg = $$getSVG()) => ($el, { matrix }) => | ||
export const $$initMatrixTransform = ($svg = $$getSVG()) => ( | ||
$el, | ||
{ matrix = $$createSVGMatrix()(), index = 0 } = {} | ||
) => | ||
$$getBaseTransformList($el).insertItemBefore( | ||
$$createSVGTransformMatrix($svg)({ matrix }), | ||
0 | ||
index | ||
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,62 +1,118 @@ | ||
import { expect } from "chai"; | ||
import { drop, go1 } from "fxjs2"; | ||
import { deepCopyTransformListToMatrixList } from "../../test/utils/deepCopyTransformListToMatrixList.js"; | ||
import { makeRandomNumber } from "../../test/utils/makeRandomNumber.js"; | ||
import { makeRandomSVGMatrix } from "../../test/utils/makeRandomSVGMatrix.js"; | ||
import { makeRandomTransformAttributeValue } from "../../test/utils/makeRandomTransformAttributeValue.js"; | ||
import { appendL, each, equals2, go, go1, mapL, object } from "fxjs2"; | ||
import { expectSameValueSVGMatrix } from "../../test/assertions/index.js"; | ||
import { | ||
makeRandomSVGMatrix, | ||
makeRandomNumber, | ||
makeRandomInt, | ||
deepCopyTransformListToMatrixList, | ||
makeRandomTransformAttributeValue, | ||
makeAllCombinations, | ||
} from "../../test/utils/index.js"; | ||
import { $$createSVGMatrix } from "../createSVGMatrix/createSVGMatrix.index.js"; | ||
import { $$el } from "../el/el.index.js"; | ||
import { $$getBaseTransformList } from "../getBaseTransformList/getBaseTransformList.index.js"; | ||
import { $$isMatrixSVGTransform } from "../isMatrixSVGTransform/isMatrixSVGTransform.index.js"; | ||
import { $$initMatrixTransform } from "./initMatrixTransform.index.js"; | ||
|
||
describe(`$$initMatrixTransform`, function () { | ||
let $el; | ||
|
||
beforeEach(function () { | ||
$el = $$el()(` | ||
<rect | ||
x="${makeRandomNumber()}" | ||
y="${makeRandomNumber()}" | ||
width="${makeRandomNumber(1)}" | ||
height="${makeRandomNumber(1)}" | ||
${go1(makeRandomTransformAttributeValue(), (t) => | ||
t ? `transform="${t}"` : "" | ||
)} | ||
> | ||
</rect> | ||
`); | ||
}); | ||
const createMockEl = () => | ||
$$el()(` | ||
<rect | ||
x="${makeRandomNumber()}" | ||
y="${makeRandomNumber()}" | ||
width="${makeRandomNumber(1)}" | ||
height="${makeRandomNumber(1)}" | ||
${go1(makeRandomTransformAttributeValue(), (t) => | ||
t ? `transform="${t}"` : "" | ||
)} | ||
> | ||
</rect> | ||
`); | ||
|
||
it(`The length of the element's SVGTransformList will be increased by 1.`, function () { | ||
const { numberOfItems: before_n } = $$getBaseTransformList($el); | ||
const expectCorrectSVGTransformListLength = ($el, config) => { | ||
const { numberOfItems: before_n } = $$getBaseTransformList($el); | ||
|
||
$$initMatrixTransform()($el, { matrix: makeRandomSVGMatrix() }); | ||
$$initMatrixTransform()($el, config); | ||
|
||
const { numberOfItems: after_n } = $$getBaseTransformList($el); | ||
expect(after_n).to.equal(before_n + 1); | ||
}); | ||
const { numberOfItems: after_n } = $$getBaseTransformList($el); | ||
expect(after_n, "expectCorrectSVGTransformListLength").to.equal(before_n + 1); | ||
}; | ||
|
||
it(`The first SVGTransform will be a matrix SVGTransform with the input SVGMatrix.`, function () { | ||
const matrix = makeRandomSVGMatrix(); | ||
const expectCorrectSVGTransform = ($el, config) => { | ||
const { matrix = $$createSVGMatrix()(), index = 0 } = config || {}; | ||
|
||
$$initMatrixTransform()($el, { matrix }); | ||
$$initMatrixTransform()($el, config); | ||
|
||
const t = $$getBaseTransformList($el).getItem(0); | ||
expect($$isMatrixSVGTransform(t)).to.be.true; | ||
expect(t.matrix).to.deep.equal(matrix); | ||
}); | ||
const t = $$getBaseTransformList($el).getItem(index); | ||
expect($$isMatrixSVGTransform(t), "expectCorrectSVGTransform").to.be.true; | ||
expectSameValueSVGMatrix(t.matrix, matrix, "expectCorrectSVGTransform"); | ||
}; | ||
|
||
it(`The function do nothing on other SVGTransforms of the element.`, function () { | ||
const before_l = deepCopyTransformListToMatrixList( | ||
$$getBaseTransformList($el) | ||
); | ||
const expectCorrectOtherSVGTransforms = ($el, config) => { | ||
const { index = 0 } = config || {}; | ||
|
||
const before_l = deepCopyTransformListToMatrixList( | ||
$$getBaseTransformList($el) | ||
); | ||
|
||
$$initMatrixTransform()($el, config); | ||
|
||
$$initMatrixTransform()($el, { matrix: makeRandomSVGMatrix() }); | ||
let after_l = deepCopyTransformListToMatrixList($$getBaseTransformList($el)); | ||
after_l = [...after_l.slice(0, index), ...after_l.slice(index + 1)]; | ||
expect(after_l, "expectCorrectOtherSVGTransforms").to.deep.equal(before_l); | ||
}; | ||
|
||
const expectAllCorrect = ($el, config) => | ||
each((f) => f($el, config), [ | ||
expectCorrectSVGTransformListLength, | ||
expectCorrectSVGTransform, | ||
expectCorrectOtherSVGTransforms, | ||
]); | ||
|
||
describe(`$$initMatrixTransform`, function () { | ||
describe(`No omitted arguments,`, function () { | ||
it(`The length of the element's SVGTransformList will be increased by 1.`, function () { | ||
const $el = createMockEl(); | ||
const matrix = makeRandomSVGMatrix(); | ||
const index = makeRandomInt(0, $$getBaseTransformList($el).numberOfItems); | ||
expectCorrectSVGTransformListLength($el, { matrix, index }); | ||
}); | ||
|
||
it(`The SVGTransform at input index is a matrix SVGTransform with the input SVGMatrix.`, function () { | ||
const $el = createMockEl(); | ||
const matrix = makeRandomSVGMatrix(); | ||
const index = makeRandomInt(0, $$getBaseTransformList($el).numberOfItems); | ||
expectCorrectSVGTransform($el, { matrix, index }); | ||
}); | ||
|
||
it(`The function do nothing on other SVGTransforms of the element.`, function () { | ||
const $el = createMockEl(); | ||
const matrix = makeRandomSVGMatrix(); | ||
const index = makeRandomInt(0, $$getBaseTransformList($el).numberOfItems); | ||
expectCorrectOtherSVGTransforms($el, { matrix, index }); | ||
}); | ||
}); | ||
|
||
const after_l = drop( | ||
1, | ||
deepCopyTransformListToMatrixList($$getBaseTransformList($el)) | ||
it(`If the second argument is omitted, use default values ({ matrix: Identity Matrix, index: 0 }).`, function () { | ||
go( | ||
["matrix", "index"], | ||
makeAllCombinations, | ||
mapL((ks) => [createMockEl(), ks]), | ||
mapL(([$el, ks]) => | ||
go( | ||
ks, | ||
mapL((k) => [ | ||
k, | ||
equals2(k, "index") | ||
? makeRandomInt(0, $$getBaseTransformList($el).numberOfItems) | ||
: makeRandomSVGMatrix(), | ||
]), | ||
object, | ||
(config) => [$el, config] | ||
) | ||
), | ||
appendL([createMockEl()]), | ||
each(([$el, config]) => expectAllCorrect($el, config)) | ||
); | ||
expect(after_l).to.deep.equal(before_l); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.