From 95b70d0dd570f6adc1c5e65926ef460bfa261adc Mon Sep 17 00:00:00 2001 From: Assayyaad Date: Wed, 14 Aug 2024 12:42:28 +0800 Subject: [PATCH] =?UTF-8?q?tests(line):=20=D8=A5=D8=B9=D8=A7=D8=AF=D8=A9?= =?UTF-8?q?=20=D9=83=D8=AA=D8=A7=D8=A8=D8=A9=20=D9=85=D9=84=D9=81=D8=A7?= =?UTF-8?q?=D8=AA=20=D8=A7=D9=84=D8=A5=D8=AE=D8=AA=D8=A8=D8=A7=D8=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/line/func/create.js | 380 ++++++++------------------------------ tests/line/func/point.js | 295 ++++++++++++++--------------- 2 files changed, 221 insertions(+), 454 deletions(-) diff --git a/tests/line/func/create.js b/tests/line/func/create.js index 9594808..1f0e79b 100644 --- a/tests/line/func/create.js +++ b/tests/line/func/create.js @@ -2,9 +2,9 @@ import { deepEqual } from 'assert/strict' import { Line } from '../../../src/exports.js' export default function () { - describe('1: اصنع مستقيماً بلا أي قيم', function () { - it('1.1: ', function () { - // 0 -1-> 1 + describe('one', function () { + it('1: لا قيم معطاة', function () { + // [0 -> 1] let l = Line.create.one({}) deepEqual(l, { @@ -17,325 +17,109 @@ export default function () { deepEqual(l.end, 1) deepEqual(l.points, [0, 1]) }) - }) - - describe('2: اصنع مستقيماً بالمسافة فقط', function () { - it('2.1: موجب', function () { - // 0 -2-> 2 - - let l = Line.create.one({ dis: 2 }) - deepEqual(l, { - start: 0, - dis: 2, - count: 2, - neg: false - }) - deepEqual(l.spacing, 2) - deepEqual(l.end, 2) - deepEqual(l.points, [0, 2]) - - // 1 -2-> 3 - - l.start = 1 - deepEqual(l, { - start: 1, - dis: 2, - count: 2, - neg: false - }) - deepEqual(l.spacing, 2) - deepEqual(l.end, 3) - deepEqual(l.points, [1, 3]) - }) - - it('2.2: سلبي', function () { - // -2 <-2- 0 - - let l = Line.create.one({ dis: 2, neg: true }) - deepEqual(l, { - start: 0, - dis: 2, - count: 2, - neg: true - }) - deepEqual(l.spacing, 2) - deepEqual(l.end, -2) - deepEqual(l.points, [0, -2]) - - // -1 <-2- 1 - - l.start = 1 - deepEqual(l, { - start: 1, - dis: 2, - count: 2, - neg: true - }) - deepEqual(l.spacing, 2) - deepEqual(l.end, -1) - deepEqual(l.points, [1, -1]) - }) - - it('2.3: نهاية إيجابية', function () { - // 0 -2-> 2 - - const l = Line.create.one({ start: 0, end: 2 }) - deepEqual(l, { - start: 0, - dis: 2, - count: 2, - neg: false - }) - deepEqual(l.spacing, 2) - deepEqual(l.end, 2) - deepEqual(l.points, [0, 2]) - }) - - it('2.4: نهاية سلبية', function () { - // -2 <-2- 0 - - const l = Line.create.one({ start: 0, end: -2 }) - deepEqual(l, { - start: 0, - dis: 2, - count: 2, - neg: true - }) - deepEqual(l.spacing, 2) - deepEqual(l.end, -2) - deepEqual(l.points, [0, -2]) - }) - }) - - describe('3: اصنع مستقيماً بالمسافة والتباعد', function () { - it('3.1: موجب', function () { - // 1 -1-> 2 -1-> 3 - - const l = Line.create.one({ start: 1, dis: 2, spacing: 1 }) - deepEqual(l, { - start: 1, - dis: 2, - count: 3, - neg: false - }) - deepEqual(l.spacing, 1) - deepEqual(l.end, 3) - deepEqual(l.points, [1, 2, 3]) - }) - it('3.2: سلبي', function () { - // -3 <-1- -2 <-1- -1 - - const l = Line.create.one({ start: -1, dis: 2, spacing: 1, neg: true }) - deepEqual(l, { - start: -1, - dis: 2, - count: 3, - neg: true - }) - deepEqual(l.spacing, 1) - deepEqual(l.end, -3) - deepEqual(l.points, [-1, -2, -3]) + it('2: قيم صنع مستقيم موجب', function () { + // [1 -> 3] + + const optionWays = [ + { start: 1, end: 3, count: 3 }, + { start: 1, dis: 2, count: 3, neg: false }, + { start: 1, spacing: 1, count: 3, neg: false }, + { start: 1, spacing: 1, dis: 2, neg: false }, + { points: [1, 2, 3] } + ] + let l + + for (let i = 0; i < optionWays.length; i++) { + l = Line.create.one(optionWays[i]) + deepEqual(l, { + start: 1, + dis: 2, + count: 3, + neg: false + }) + deepEqual(l.spacing, 1) + deepEqual(l.end, 3) + deepEqual(l.points, [1, 2, 3]) + } + }) + + it('3: قيم صنع مستقيم سالب', function () { + // [-1 -> -3] + + const optionWays = [ + { start: -1, end: -3, count: 3 }, + { start: -1, dis: 2, count: 3, neg: true }, + { start: -1, spacing: 1, count: 3, neg: true }, + { start: -1, spacing: 1, dis: 2, neg: true }, + { points: [-1, -2, -3] } + ] + let l + + for (let i = 0; i < optionWays.length; i++) { + l = Line.create.one(optionWays[i]) + deepEqual(l, { + start: -1, + dis: 2, + count: 3, + neg: true + }) + deepEqual(l.spacing, 1) + deepEqual(l.end, -3) + deepEqual(l.points, [-1, -2, -3]) + } }) }) - describe('4: اصنع مستقيماً بالمسافة والعدد', function () { - it('4.1: موجب', function () { - // 0 -1-> 1 -1-> 2 - - const l = Line.create.one({ dis: 2, count: 3 }) - deepEqual(l, { - start: 0, - dis: 2, - count: 3, - neg: false - }) - deepEqual(l.spacing, 1) - deepEqual(l.end, 2) - deepEqual(l.points, [0, 1, 2]) - }) - - it('4.2: سلبي', function () { - // -2 <-1- -1 <-1- 0 + describe('points', function () { + it('1: العدد فقط - فردي', function () { + // -2, -1 | 0 | +1, +2 - const l = Line.create.one({ dis: 2, count: 3, neg: true }) - deepEqual(l, { - start: 0, - dis: 2, - count: 3, - neg: true - }) - deepEqual(l.spacing, 1) - deepEqual(l.end, -2) - deepEqual(l.points, [0, -1, -2]) - }) - }) - - describe('5: اصنع مستقيماً بالتباعد والعدد', function () { - it('5.1: موجب', function () { - // 0 -1-> 1 -1-> 2 - - const l = Line.create.one({ spacing: 1, count: 3 }) - deepEqual(l, { - start: 0, - dis: 2, - count: 3, - neg: false - }) - deepEqual(l.spacing, 1) - deepEqual(l.end, 2) - deepEqual(l.points, [0, 1, 2]) - }) - - it('5.2: سلبي', function () { - // -2 <-1- -1 <-1- 0 - - const l = Line.create.one({ spacing: 1, count: 3, neg: true }) - deepEqual(l, { - start: 0, - dis: 2, - count: 3, - neg: true - }) - deepEqual(l.spacing, 1) - deepEqual(l.end, -2) - deepEqual(l.points, [0, -1, -2]) - }) - }) - - describe('6: اصنع مستقيماً بنقاط جاهزة', function () { - it('6.1: موجب', function () { - // 0 -1-> 1 -1-> 2 - - const l = Line.create.one({ points: [0, 1, 2] }) - deepEqual(l, { - start: 0, - dis: 2, - count: 3, - neg: false - }) - deepEqual(l.spacing, 1) - deepEqual(l.end, 2) - deepEqual(l.points, [0, 1, 2]) - }) - - it('6.2: سلبي', function () { - // -4 <-2- -2 <-2- 0 - - const l = Line.create.one({ points: [0, -2, -4] }) - deepEqual(l, { - start: 0, - dis: 4, - count: 3, - neg: true - }) - deepEqual(l.spacing, 2) - deepEqual(l.end, -4) - deepEqual(l.points, [0, -2, -4]) - }) - - it('6.3: دالة صنع النقاط - موجب', function () { - // -1 | 0 | +1 - - const pArr = Line.create.points({ count: 3, sort: 'neg' }) - deepEqual(pArr, [-1, 0, 1]) - - // -1 -1-> 0 -1-> 1 - - const l = Line.create.one({ points: pArr }) - deepEqual(l, { - start: -1, - dis: 2, - count: 3, - neg: false - }) - deepEqual(l.spacing, 1) - deepEqual(l.end, 1) - deepEqual(l.points, [-1, 0, 1]) - }) - - it('6.4: دالة صنع النقاط - سالب', function () { - // +1 | 0 | -1 - - const pArr = Line.create.points({ count: 3, sort: 'pos' }) - deepEqual(pArr, [1, 0, -1]) - - // -1 <-1- 0 <-1- 1 - - const l = Line.create.one({ points: pArr }) - deepEqual(l, { - start: 1, - dis: 2, - count: 3, - neg: true - }) - deepEqual(l.spacing, 1) - deepEqual(l.end, -1) - deepEqual(l.points, [1, 0, -1]) - }) - }) - - describe('7: اصنع نقاطاً على مستقيم', function () { - it('7.1: العدد فقط - فردي', function () { - // -3, -2, -1 | 0 | +1, +2, +3 - - // -3 * 1 = -3 // -2 * 1 = -2 // -1 * 1 = -1 // 0 * 1 = 0 // +1 * 1 = +1 // +2 * 1 = +2 - // +3 * 1 = +3 - const pArr = Line.create.points({ count: 7 }) - deepEqual(pArr, [0, 1, -1, 2, -2, 3, -3]) + const pArr = Line.create.points({ count: 5 }) + deepEqual(pArr, [0, 1, -1, 2, -2]) }) - it('7.2: العدد فقط - زوجي', function () { - // -2.5, -1.5, -0.5 | | +0.5, +1.5, +2.5 - - // half_spacing = 1 * 0.5 = 0.5 - // (-2 * 1) + -half_spacing = -2 + -0.5 = -2.5 - // (-1 * 1) + -half_spacing = -1 + -0.5 = -1.5 - // (-0 * 1) + -half_spacing = -0 + -0.5 = -0.5 - // - // (+0 * 1) + +half_spacing = +0 + +0.5 = +0.5 - // (+1 * 1) + +half_spacing = +1 + +0.5 = +1.5 - // (+2 * 1) + +half_spacing = +2 + +0.5 = +2.5 + it('2: العدد والتباعد - فردي', function () { + // -4, -2 | 0 | +2, +4 - const pArr = Line.create.points({ count: 6 }) - deepEqual(pArr, [0.5, -0.5, 1.5, -1.5, 2.5, -2.5]) - }) - - it('7.3: العدد والتباعد - فردي', function () { - // -6, -4, -2 | 0 | +2, +4, +6 - - // -3 * 2 = -6 // -2 * 2 = -4 // -1 * 2 = -2 // 0 * 2 = 0 // +1 * 2 = +2 // +2 * 2 = +4 - // +3 * 2 = +6 - const pArr = Line.create.points({ count: 7, spacing: 2 }) - deepEqual(pArr, [0, 2, -2, 4, -4, 6, -6]) + const pArr = Line.create.points({ count: 5, spacing: 2 }) + deepEqual(pArr, [0, 2, -2, 4, -4]) + }) + + it('3: العدد فقط - زوجي', function () { + // -1.5, -0.5 | +0.5, +1.5 + + // (-1 * 1) - (1 / 2) = -1 - 0.5 = -1.5 + // (-0 * 1) - (1 / 2) = -0 - 0.5 = -0.5 + // (+0 * 1) + (1 / 2) = +0 + 0.5 = +0.5 + // (+1 * 1) + (1 / 2) = +1 + 0.5 = +1.5 + + const pArr = Line.create.points({ count: 4 }) + deepEqual(pArr, [0.5, -0.5, 1.5, -1.5]) }) - it('7.4: العدد والتباعد - زوجي', function () { - // -5, -3, -1 | | +1, +3, +5 + it('4: العدد والتباعد - زوجي', function () { + // -3, -1 | +1, +3 - // half_spacing = 2 * 0.5 = 1 - // (-2 * 2) + -half_spacing = -4 + -1 = -5 - // (-1 * 2) + -half_spacing = -2 + -1 = -3 - // (-0 * 2) + -half_spacing = -0 + -1 = -1 - // - // (+0 * 2) + +half_spacing = -0 + +1 = +1 - // (+1 * 2) + +half_spacing = -2 + +1 = +3 - // (+2 * 2) + +half_spacing = -4 + +1 = +5 + // (-1 * 2) - (2 / 2) = -2 - 1 = -3 + // (-0 * 2) - (2 / 2) = -0 - 1 = -1 + // (+0 * 2) + (2 / 2) = -0 + 1 = +1 + // (+1 * 2) + (2 / 2) = -2 + 1 = +3 - const pArr = Line.create.points({ count: 6, spacing: 2 }) - deepEqual(pArr, [1, -1, 3, -3, 5, -5]) + const pArr = Line.create.points({ count: 4, spacing: 2 }) + deepEqual(pArr, [1, -1, 3, -3]) }) }) } diff --git a/tests/line/func/point.js b/tests/line/func/point.js index 78aee34..cf7c124 100644 --- a/tests/line/func/point.js +++ b/tests/line/func/point.js @@ -1,230 +1,213 @@ import { equal } from 'assert/strict' import { Line } from '../../../src/exports.js' +import { ok } from 'assert' -let line -let current +const posLine = Line.create.one({ end: +10 }) +const negLine = Line.create.one({ end: -10 }) +const posCurrent = +5 +const negCurrent = -5 export default function () { - describe('1: تحقق مما إذا كانت القيمة داخل المستقيم الموجب', function () { - before(function () { - line = Line.create.one({ dis: 10 }) - }) - - it('1.1: خارج المستقيم - قبل', function () { - // -1 <-> [0 <-> 10] + describe('inside', function () { + it('1: داخل المستقيم', function () { + // [0 -> 0 -> 10] + ok(Line.point.inside(posLine, 0)) - const a = Line.point.inside(line, -1) - equal(a, false) - }) + // [0 -> 5 -> 10] + ok(Line.point.inside(posLine, 5)) - it('1.2: خارج المستقيم - بعد', function () { - // [0 <-> 10] <-> 11 + // [0 -> 10 -> 10] + ok(Line.point.inside(posLine, 10)) - const a = Line.point.inside(line, 11) - equal(a, false) - }) + // [0 -> 0 -> -10] + ok(Line.point.inside(negLine, 0)) - it('1.3: داخل المستقيم', function () { - // [0 <-> 5 <-> 10] + // [0 -> -5 -> -10] + ok(Line.point.inside(negLine, -5)) - const a = Line.point.inside(line, 5) - equal(a, true) + // [0 -> -10 -> -10] + ok(Line.point.inside(negLine, -10)) }) - it('1.4: على بداية المستقيم', function () { - // [0' <-> 10] + it('1: خارج المستقيم', function () { + // -1 -> [0 -> 10] + ok(!Line.point.inside(posLine, -1)) - const a = Line.point.inside(line, 0) - equal(a, true) - }) + // [0 -> 10] -> 11 + ok(!Line.point.inside(posLine, 11)) - it('1.5: على نهاية المستقيم', function () { - // [0 <-> '10] + // 1 -> [0 -> -10] + ok(!Line.point.inside(negLine, 1)) - const a = Line.point.inside(line, 10) - equal(a, true) + // [0 -> -10] -> -11 + ok(!Line.point.inside(negLine, -11)) }) }) - describe('2: تحقق مما إذا كانت القيمة داخل المستقيم السالب', function () { - before(function () { - line = Line.create.one({ dis: 10, neg: true }) + describe('move', function () { + afterEach(function () { + posLine.start = 0 + posLine.end = 10 + negLine.start = 0 + negLine.end = -10 }) - it('2.1: خارج المستقيم - قبل', function () { - // -11 <-> [-10 <-> 0] + it('1: عكس المستقيم', function () { + // [0 -> 10] => [10 -> 0] - const a = Line.point.inside(line, -11) - equal(a, false) - }) + let l = Line.point.move.flip(posLine) + equal(l.start, 10) + equal(l.end, 0) - it('2.2: خارج المستقيم - بعد', function () { - // [-10 <-> 0] <-> 1 + // [0 -> -10] => [-10 -> 0] - const a = Line.point.inside(line, 1) - equal(a, false) + l = Line.point.move.flip(negLine) + equal(l.start, -10) + equal(l.end, 0) }) - it('2.3: داخل المستقيم', function () { - // [-10 <-> -5 <-> 0] + it('2: تحديث موضع البداية فقط', function () { + // [0 -> 10] => [-5 -> 10] - const a = Line.point.inside(line, -5) - equal(a, true) - }) + let l = Line.point.move(posLine, -5, { type: 'by', target: 'start' }) - it('2.4: على بداية المستقيم', function () { - // [-10 <-> '0] + equal(l.start, -5) + equal(l.end, 10) - const a = Line.point.inside(line, 0) - equal(a, true) - }) + // [-5 -> 10] => [20 -> 10] - it('2.5: على نهاية المستقيم', function () { - // [-10' <-> 0] + l = Line.point.move(l, 20, { type: 'to', target: 'start' }) + equal(l.start, 20) + equal(l.end, 10) - const a = Line.point.inside(line, -10) - equal(a, true) - }) - }) + // [0 -> -10] => [5 -> -10] - describe('3: حرّك القيمة على المستقيم الموجب', function () { - before(function () { - line = Line.create.one({ dis: 10 }) - current = 5 - }) + l = Line.point.move(negLine, 5, { type: 'by', target: 'start' }) - it('3.1: خطوة صفر', function () { - // [0 <- 5 -> 10] 0>> = [0 <- 5 -> 10] + equal(l.start, 5) + equal(l.end, -10) - const a = Line.point.ride(line, current, 0) - equal(a, 5) + // [5 -> -10] => [-20 -> -10] + + l = Line.point.move(l, -20, { type: 'to', target: 'start' }) + equal(l.start, -20) + equal(l.end, -10) }) - it('3.2: الحركة للأمام داخل النطاق', function () { - // [0 <- 5 -> 10] 3>> = [0 <- 8 -> 10] + it('3: تحديث موضع النهاية فقط', function () { + // [0 -> 10] => [0 -> 5] - const a = Line.point.ride(line, current, 3) - equal(a, 8) - }) + let l = Line.point.move(posLine, -5, { type: 'by', target: 'end' }) + equal(l.start, 0) + equal(l.end, 5) - it('3.3: عدم تجاوز الحد الأقصى', function () { - // [0 <- 5 -> 10] 10>> = [0 <-> '10] + // [0 -> 5] => [0 -> 20] - const a = Line.point.ride(line, current, 10) - equal(a, 10) - }) + l = Line.point.move(l, 20, { type: 'to', target: 'end' }) + equal(l.start, 0) + equal(l.end, 20) - it('3.4: الحركة للخلف داخل النطاق', function () { - // [0 <- 5 -> 10] <<3 = [0 <- 2 -> 10] + // [0 -> -10] => [0 -> -5] - const a = Line.point.ride(line, current, 3, true) - equal(a, 2) - }) + l = Line.point.move(negLine, 5, { type: 'by', target: 'end' }) + equal(l.start, 0) + equal(l.end, -5) - it('3.5: عدم تجاوز الحد الأدنى', function () { - // [0 <- 5 -> 10] <<10 = [0' <-> 10] + // [0 -> -5] => [0 -> -20] - const a = Line.point.ride(line, current, 10, true) - equal(a, 0) + l = Line.point.move(l, -20, { type: 'to', target: 'end' }) + equal(l.start, 0) + equal(l.end, -20) }) - }) - describe('4: حرّك القيمة على المستقيم السالب', function () { - before(function () { - line = Line.create.one({ dis: 10, neg: true }) - current = -5 - }) + it('4: تحديث موضع البداية والنهاية معاً', function () { + // [0 -> 10] => [-5 -> 5] - it('4.1: خطوة صفر', function () { - // [-10 <- -5 -> 0] <<0 = [-10 <- -5 -> 0] + let l = Line.point.move(posLine, -5, { type: 'by', target: 'both' }) + equal(l.start, -5) + equal(l.end, 5) - const a = Line.point.ride(line, current, 0) - equal(a, -5) - }) + // [-5 -> 5] => [20 -> 20] - it('4.2: الحركة للأمام داخل النطاق', function () { - // [-10 <- -5 -> 0] <<3 = [-10 <- -8 -> 0] + l = Line.point.move(l, 20, { type: 'to', target: 'both' }) + equal(l.start, 20) + equal(l.end, 20) - const a = Line.point.ride(line, current, 3) - equal(a, -8) - }) + // [0 -> -10] => [5 -> -5] + + l = Line.point.move(negLine, 5, { type: 'by', target: 'both' }) + equal(l.start, 5) + equal(l.end, -5) - it('4.3: عدم تجاوز الحد الأقصى', function () { - // [-10 <- -5 -> 0] <<10 = [-10' <-> 0] + // [5 -> -5] => [-20 -> -20] - const a = Line.point.ride(line, current, 10) - equal(a, -10) + l = Line.point.move(l, -20, { type: 'to', target: 'both' }) + equal(l.start, -20) + equal(l.end, -20) }) + }) - it('4.4: الحركة للخلف داخل النطاق', function () { - // [-10 <- -5 -> 0] 3>> = [-10 <- -2 -> 0] + describe('ride', function () { + describe('3: حرّك القيمة على المستقيم الموجب', function () { + it('1: خطوة صفر', function () { + // [0 -> +5 -> +10] 0>> = [0 -> +5 -> +10] - const a = Line.point.ride(line, current, 3, true) - equal(a, -2) - }) + let p = Line.point.ride(posLine, posCurrent, 0) + equal(p, +5) - it('4.5: عدم تجاوز الحد الأدنى', function () { - // [-10 <- -5 -> 0] 10>> = [-10 <-> '0] + // [0 -> -5 -> -10] 0>> = [0 -> -5 -> -10] - const a = Line.point.ride(line, current, 10, true) - equal(a, 0) - }) - }) + p = Line.point.ride(negLine, negCurrent, 0) + equal(p, -5) + }) - describe('5: تحديث مواضع المستقيم', function () { - beforeEach(function () { - line = Line.create.one({ start: 0, end: 10 }) - }) + it('2: الحركة للأمام داخل النطاق', function () { + // [0 -> +5 -> +10] 3>> = [0 -> +8 -> +10] - it('5.1: عكس مستقيم', function () { - // [0 -> 10] => [10 <- 0] + let p = Line.point.ride(posLine, posCurrent, 3) + equal(p, +8) - const a = Line.point.move.flip(line) - equal(a.start, 10) - equal(a.end, 0) - }) + // [0 -> -5 -> -10] 3>> = [0 -> -8 -> -10] - it('5.2: تحديث موضع البداية فقط', function () { - // [0 -> 10] => [5 -> 10] + p = Line.point.ride(negLine, negCurrent, 3) + equal(p, -8) + }) - let a = Line.point.move(line, 5, { type: 'by', target: 'start' }) + it('3: عدم تجاوز الحد الأقصى', function () { + // [0 -> +5 -> +10] 10>> = [0 -> +10 -> +10] - equal(a.start, 5) - equal(a.end, 10) + let p = Line.point.ride(posLine, posCurrent, 10) + equal(p, +10) - // [5 -> 10] => [10 <- 20] + // [0 -> -5 -> -10] 10>> = [0 -> -10 -> -10] - a = Line.point.move(a, 20, { type: 'to', target: 'start' }) - equal(a.start, 20) - equal(a.end, 10) - }) + p = Line.point.ride(negLine, negCurrent, 10) + equal(p, -10) + }) - it('5.3: تحديث موضع النهاية فقط', function () { - // [0 -> 10] => [0 -> 15] + it('4: الحركة للخلف داخل النطاق', function () { + // [0 -> +5 -> +10] <<3 = [0 -> +2 -> +10] - let a = Line.point.move(line, 5, { type: 'by', target: 'end' }) - equal(a.start, 0) - equal(a.end, 15) + let p = Line.point.ride(posLine, posCurrent, 3, true) + equal(p, +2) - // [0 -> 15] => [0 -> 20] + // [0 -> -5 -> -10] <<3 = [0 -> -2 -> -10] - a = Line.point.move(a, 20, { type: 'to', target: 'end' }) - equal(a.start, 0) - equal(a.end, 20) - }) + p = Line.point.ride(negLine, negCurrent, 3, true) + equal(p, -2) + }) - it('5.4: تحديث موضع البداية والنهاية معاً', function () { - // [0 -> 10] => [5 -> 15] + it('5: عدم تجاوز الحد الأدنى', function () { + // [0 -> +5 -> +10] <<10 = [0 -> +0 -> +10] - let a = Line.point.move(line, 5, { type: 'by', target: 'both' }) - equal(a.start, 5) - equal(a.end, 15) + let p = Line.point.ride(posLine, posCurrent, 10, true) + equal(p, 0) - // [5 -> 15] => [20 -> 20] + // [0 -> -5 -> -10] <<10 = [0 -> 0 -> -10] - a = Line.point.move(a, 20, { type: 'to', target: 'both' }) - equal(a.start, 20) - equal(a.end, 20) + p = Line.point.ride(negLine, negCurrent, 10, true) + equal(p, 0) + }) }) }) }