Best JavaScript code snippet using fast-check-monorepo
selection.ts
Source:selection.ts
1import { TextSelection, Selection } from 'prosemirror-state';2import { createEditorState } from '@atlaskit/editor-test-helpers/create-editor-state';3import sampleSchema from '@atlaskit/editor-test-helpers/schema';4import {5 p,6 ul,7 li,8 doc,9 code_block,10 RefsNode,11 DocBuilder,12} from '@atlaskit/editor-test-helpers/doc-builder';13import { normalizeListItemsSelection } from '../../../utils/selection';14type DocumentType = DocBuilder;15function createRefsDocNode(documentNode: DocumentType): RefsNode {16 return documentNode(sampleSchema);17}18function fixedSelectionFromRefs(doc: RefsNode): Selection | null {19 const refs = doc.refs;20 const { fixedStart, fixedEnd, '>': gt, '<': lt } = refs;21 const startIsInteger = Number.isInteger(fixedStart);22 const endIsInteger = Number.isInteger(fixedEnd);23 if (startIsInteger && endIsInteger) {24 return TextSelection.create(doc, fixedStart, fixedEnd);25 }26 if (startIsInteger && Number.isInteger(gt)) {27 return TextSelection.create(doc, fixedStart, gt);28 }29 if (Number.isInteger(lt) && endIsInteger) {30 return TextSelection.create(doc, lt, fixedEnd);31 }32 return null;33}34describe('utils/selection', () => {35 describe('#normalizeListItemsSelection', () => {36 const case0: [string, DocumentType] = [37 'is a cursor selection',38 // Scenario39 doc(40 // prettier-ignore41 ul(42 li(p('A')),43 li(44 p('B'),45 ul(46 li(p('B1')),47 li(p('B2{<>}')),48 li(p('B3')),49 ),50 ),51 li(p('C')),52 ),53 ),54 ];55 const case1: [string, DocumentType] = [56 'range selection starts in a non-visible position',57 // Scenario58 doc(59 // prettier-ignore60 ul(61 li(p('A')),62 li(63 p('B'),64 ul(65 li(p('B1', '{<}')),66 li(p('{fixedStart}', 'B2{>}')),67 li(p('B3')),68 ),69 ),70 li(p('C')),71 ),72 ),73 ];74 const case2: [string, DocumentType] = [75 'range selection ends in a non-visible position',76 // Scenario77 doc(78 // prettier-ignore79 ul(80 li(p('A')),81 li(82 p('B'),83 ul(84 li(p('B1')),85 li(p('{<}B2{fixedEnd}')),86 li(p('{>}B3')),87 ),88 ),89 li(p('C')),90 ),91 ),92 ];93 const case3: [string, DocumentType] = [94 'range selection starts and ends in a non-visible position',95 // Scenario96 doc(97 // prettier-ignore98 ul(99 li(p('A')),100 li(101 p('B'),102 ul(103 li(p('B1{<}')),104 li(p('{fixedStart}B2{fixedEnd}')),105 li(p('{>}B3')),106 ),107 ),108 li(p('C')),109 ),110 ),111 ];112 const case4: [string, DocumentType] = [113 'range selection starts in a non-visible sibling list item',114 // Scenario115 doc(116 // prettier-ignore117 ul(118 li(p('A{<}')),119 li(120 p('{fixedStart}B'),121 ul(122 li(p('B1')),123 li(p('B2{fixedEnd}')),124 li(p('{>}B3')),125 ),126 ),127 li(p('C')),128 ),129 ),130 ];131 const case5: [string, DocumentType] = [132 'range selection starts in a non-visible sibling list item with nested list',133 // Scenario134 doc(135 // prettier-ignore136 ul(137 li(138 p('A'),139 ul(140 li(p('A1{<}')),141 ),142 ),143 li(144 p('{fixedStart}B'),145 ul(146 li(p('B1')),147 li(p('B2{fixedEnd}')),148 li(p('{>}B3')),149 ),150 ),151 li(p('C')),152 ),153 ),154 ];155 const case6: [string, DocumentType] = [156 'range selection ends in a non-visible sibling list item',157 // Scenario158 doc(159 // prettier-ignore160 ul(161 li(p('A')),162 li(163 p('{<}B'),164 ul(165 li(p('B1')),166 li(p('B2')),167 li(p('B3{fixedEnd}')),168 ),169 ),170 li(p('{>}C')),171 ),172 ),173 ];174 const case7: [string, DocumentType] = [175 'range selection stars and ends in a non-visible sibling list item',176 // Scenario177 doc(178 // prettier-ignore179 ul(180 li(p('A{<}')),181 li(182 p('{fixedStart}B'),183 ul(184 li(p('B1')),185 li(p('B2')),186 li(p('B3{fixedEnd}')),187 ),188 ),189 li(p('{>}C')),190 ),191 ),192 ];193 const case8: [string, DocumentType] = [194 'range selection stars and ends in a non-visible sibling list item with nested list',195 // Scenario196 doc(197 // prettier-ignore198 ul(199 li(200 p('A'),201 ul(202 li(p('A1{<}')),203 ),204 ),205 li(206 p('{fixedStart}B'),207 ul(208 li(p('B1')),209 li(p('B2')),210 li(p('B3{fixedEnd}')),211 ),212 ),213 li(p('{>}C')),214 ),215 ),216 ];217 const case9: [string, DocumentType] = [218 'range selection stars in a non-visible sibling list item and ends in a code block',219 // Scenario220 doc(221 // prettier-ignore222 ul(223 li(224 p('text{<}'),225 ul(226 li(code_block()('{fixedStart}', 'text{>}')),227 ),228 ),229 li(p('text')),230 ),231 ),232 ];233 describe.each<[string, DocumentType]>([234 // prettier-ignore235 case0,236 case1,237 case2,238 case3,239 case4,240 case5,241 case6,242 case7,243 case8,244 case9,245 ])('[case%#] when %s', (_scenario, scenario) => {246 it('should match the expected selection', () => {247 const docRefs = createRefsDocNode(scenario);248 const myState = createEditorState(scenario);249 const { selection, doc } = myState;250 const fixedSelection = fixedSelectionFromRefs(docRefs) || selection;251 const result = normalizeListItemsSelection({252 selection,253 doc,254 });255 expect(result.$from.pos).toBe(fixedSelection.$from.pos);256 expect(result.$to.pos).toBe(fixedSelection.$to.pos);257 });258 });259 });...
useRaf.test.ts
Source:useRaf.test.ts
1import { act, renderHook } from '@testing-library/react-hooks';2import { replaceRaf } from 'raf-stub';3import useRaf from '../src/useRaf';4/**5 * New requestAnimationFrame after being replaced with raf-stub for testing purposes.6 */7interface RequestAnimationFrame {8 reset(): void;9 step(): void;10}11declare var requestAnimationFrame: RequestAnimationFrame;12replaceRaf();13const fixedStart = 1564949709496;14const spyDateNow = jest.spyOn(Date, 'now').mockImplementation(() => fixedStart);15beforeEach(() => {16 jest.useFakeTimers();17 requestAnimationFrame.reset();18});19afterEach(() => {20 jest.clearAllTimers();21 requestAnimationFrame.reset();22});23it('should init percentage of time elapsed', () => {24 const { result } = renderHook(() => useRaf());25 const timeElapsed = result.current;26 expect(timeElapsed).toBe(0);27});28it('should return corresponding percentage of time elapsed for default ms', () => {29 const { result } = renderHook(() => useRaf());30 expect(result.current).toBe(0);31 act(() => {32 jest.runOnlyPendingTimers(); // start after delay33 spyDateNow.mockImplementationOnce(() => fixedStart + 1e12 * 0.25); // 25%34 requestAnimationFrame.step();35 });36 expect(result.current).toBe(0.25);37 act(() => {38 spyDateNow.mockImplementationOnce(() => fixedStart + 1e12 * 0.5); // 50%39 requestAnimationFrame.step();40 });41 expect(result.current).toBe(0.5);42 act(() => {43 spyDateNow.mockImplementationOnce(() => fixedStart + 1e12 * 0.75); // 75%44 requestAnimationFrame.step();45 });46 expect(result.current).toBe(0.75);47 act(() => {48 spyDateNow.mockImplementationOnce(() => fixedStart + 1e12); // 100%49 requestAnimationFrame.step();50 });51 expect(result.current).toBe(1);52});53it('should return corresponding percentage of time elapsed for custom ms', () => {54 const customMs = 2000;55 const { result } = renderHook(() => useRaf(customMs));56 expect(result.current).toBe(0);57 act(() => {58 jest.runOnlyPendingTimers(); // start after delay59 spyDateNow.mockImplementationOnce(() => fixedStart + customMs * 0.25); // 25%60 requestAnimationFrame.step();61 });62 expect(result.current).toBe(0.25);63 act(() => {64 spyDateNow.mockImplementationOnce(() => fixedStart + customMs * 0.5); // 50%65 requestAnimationFrame.step();66 });67 expect(result.current).toBe(0.5);68 act(() => {69 spyDateNow.mockImplementationOnce(() => fixedStart + customMs * 0.75); // 75%70 requestAnimationFrame.step();71 });72 expect(result.current).toBe(0.75);73 act(() => {74 spyDateNow.mockImplementationOnce(() => fixedStart + customMs); // 100%75 requestAnimationFrame.step();76 });77 expect(result.current).toBe(1);78});79it('should return always 1 after corresponding ms reached', () => {80 const { result } = renderHook(() => useRaf());81 expect(result.current).toBe(0);82 act(() => {83 jest.runOnlyPendingTimers(); // start after delay84 spyDateNow.mockImplementationOnce(() => fixedStart + 1e12); // 100%85 requestAnimationFrame.step();86 });87 expect(result.current).toBe(1);88 act(() => {89 spyDateNow.mockImplementationOnce(() => fixedStart + 1e12 * 1.1); // 110%90 requestAnimationFrame.step();91 });92 expect(result.current).toBe(1);93 act(() => {94 spyDateNow.mockImplementationOnce(() => fixedStart + 1e12 * 3); // 300%95 requestAnimationFrame.step();96 });97 expect(result.current).toBe(1);98});99it('should wait until delay reached to start calculating elapsed percentage', () => {100 const { result } = renderHook(() => useRaf(undefined, 500));101 expect(result.current).toBe(0);102 act(() => {103 jest.advanceTimersByTime(250); // fast-forward only half of custom delay104 });105 expect(result.current).toBe(0);106 act(() => {107 jest.advanceTimersByTime(249); // fast-forward 1ms less than custom delay108 });109 expect(result.current).toBe(0);110 act(() => {111 jest.advanceTimersByTime(1); // fast-forward exactly to custom delay112 });113 expect(result.current).not.toBe(0);114});115it('should clear pending timers on unmount', () => {116 const spyRafStop = jest.spyOn(global, 'cancelAnimationFrame' as any);117 const { unmount } = renderHook(() => useRaf());118 expect(clearTimeout).not.toHaveBeenCalled();119 expect(spyRafStop).not.toHaveBeenCalled();120 unmount();121 expect(clearTimeout).toHaveBeenCalledTimes(2);122 expect(spyRafStop).toHaveBeenCalledTimes(1);...
Using AI Code Generation
1const fc = require('fast-check');2const { fixedStart } = require('fast-check/lib/check/arbitrary/FixedStartArbitrary.js');3const { integer } = require('fast-check/lib/check/arbitrary/IntegerArbitrary.js');4const { stringOf } = require('fast-check/lib/check/arbitrary/StringArbitrary.js');5const intArb = integer(-100, 100);6const stringArb = stringOf(integer(97, 122), { minLength: 1, maxLength: 10 });7const fixedStartArb = fixedStart(intArb, stringArb);8fc.assert(9 fc.property(fixedStartArb, (value) => {10 return value[0] > 0 && typeof value[1] === 'string';11 })12);13const fc = require('fast-check');14const { fixedStart } = require('fast-check/lib/check/arbitrary/FixedStartArbitrary.js');15const { integer } = require('fast-check/lib/check/arbitrary/IntegerArbitrary.js');16const { stringOf } = require('fast-check/lib/check/arbitrary/StringArbitrary.js');17const intArb = integer(-100, 100);18const stringArb = stringOf(integer(97, 122), { minLength: 1, maxLength: 10 });19const fixedStartArb = fixedStart(intArb, stringArb);20fc.assert(21 fc.property(fixedStartArb, (value) => {22 return value[0] > 0 && typeof value[1] === 'string';23 })24);
Using AI Code Generation
1const fc = require('fast-check');2const {fixedStart} = require('fast-check-monorepo');3const {expect} = require('chai');4describe('test3', () => {5 it('should pass', () => {6 const arb = fixedStart(fc.integer(), 1);7 fc.assert(fc.property(arb, (x) => x === 1));8 });9});
Using AI Code Generation
1const fc = require('fast-check');2const { fixedStart } = require('fast-check-monorepo');3const { fixedStart } = require('fast-check');4fc.configureGlobal({ seed: 42, numRuns: 1000 });5fc.assert(fc.property(fc.nat(), fc.nat(), fc.nat(), fc.nat(), fc.nat(), (a, b, c, d, e) => {6 return a + b + c + d + e > 0;7}));8const fc = require('fast-check');9const { fixedStart } = require('fast-check-monorepo');10const { fixedStart } = require('fast-check');11fc.configureGlobal({ seed: 42, numRuns: 1000 });12fc.assert(fc.property(fc.nat(), fc.nat(), fc.nat(), fc.nat(), fc.nat(), (a, b, c, d, e) => {13 return a + b + c + d + e > 0;14}));15const fc = require('fast-check');16const { fixedStart } = require('fast-check-monorepo');17const { fixedStart } = require('fast-check');18fc.configureGlobal({ seed: 42, numRuns: 1000 });19fc.assert(fc.property(fc.nat(), fc.nat(), fc.nat(), fc.nat(), fc.nat(), (a, b, c, d, e) => {20 return a + b + c + d + e > 0;21}));22const fc = require('fast-check');23const { fixedStart } = require('fast-check-monorepo');24const { fixedStart } = require('fast-check');25fc.configureGlobal({ seed: 42, numRuns: 1000 });26fc.assert(fc.property(fc.nat(), fc.nat(), fc.nat(), fc.nat(), fc.nat(), (a, b, c, d, e) => {27 return a + b + c + d + e > 0;28}));29const fc = require('fast
Using AI Code Generation
1const fc = require('fast-check');2const { fixedStart } = require('fast-check-monorepo');3const { fcTest } = require('./test1');4const { fcTest2 } = require('./test2');5const fcTest3 = () => {6 fc.assert(fc.property(7 fixedStart(fcTest(), fcTest2()),8 (obj) => {9 console.log(obj);10 return true;11 }12 ));13};14fcTest3();15const fc = require('fast-check');16const { fcTest2 } = require('./test2');17const fcTest = () => {18 return fc.record({19 a: fc.boolean(),20 b: fcTest2(),21 });22};23module.exports = { fcTest };24const fc = require('fast-check');25const fcTest2 = () => {26 return fc.record({27 c: fc.string()28 });29};30module.exports = { fcTest2 };31{32 "scripts": {33 },34 "devDependencies": {35 }36}37module.exports = {38};39const { fcTest3 } = require('./test3');40test('fcTest3', () => {41 fcTest3();42});43const { fcTest } = require('./test1');44test('fcTest', () => {45 fcTest();46});47const { fcTest2 } = require('./test2');48test('fcTest2', () => {49 fcTest2();50});51const { fcTest3 } = require('./test3');52test('fcTest3', () => {53 fcTest3();
Using AI Code Generation
1const fc = require('fast-check');2const { fixedStart } = require('fast-check/lib/check/arbitrary/FixedStartArbitrary');3const max = 100;4const min = 0;5const array = fc.array(fc.integer(min, max), 3, 3);6const fixedStartArray = fixedStart(array, [0, 0, 0]);7fc.assert(fc.property(fixedStartArray, (fixedArray) => fixedArray.every((v) => v === 0)));8const fc = require('fast-check');9const { fixedStart } = require('fast-check/lib/check/arbitrary/FixedStartArbitrary');10const max = 100;11const min = 0;12const array = fc.array(fc.integer(min, max), 3, 3);13const fixedStartArray = fixedStart(array, [0, 0, 0]);14fc.assert(fc.property(fixedStartArray, (fixedArray) => fixedArray.every((v) => v === 0)), {15});
Using AI Code Generation
1import { fixedStart } from 'fast-check-monorepo';2const fc = fixedStart();3fc.assert(fc.property(fc.nat(), (n) => n >= 0));4import { fixedStart } from 'fast-check';5const fc = fixedStart();6fc.assert(fc.property(fc.nat(), (n) => n >= 0));7import { fixedStart } from 'fast-check-monorepo';8const fc = fixedStart();9fc.assert(fc.property(fc.nat(), (n) => n >= 0));10import { fixedStart } from 'fast-check';11const fc = fixedStart();12fc.assert(fc.property(fc.nat(), (n) => n >= 0));13import { fixedStart } from 'fast-check-monorepo';14const fc = fixedStart();15fc.assert(fc.property(fc.nat(), (n) => n >= 0));16import { fixedStart } from 'fast-check';17const fc = fixedStart();18fc.assert(fc.property(fc.nat(), (n) => n >= 0));19import { fixedStart } from 'fast-check-monorepo';20const fc = fixedStart();21fc.assert(fc.property(fc.nat(), (n) => n >= 0));22import { fixedStart } from 'fast-check';23const fc = fixedStart();24fc.assert(fc.property(fc.nat(), (n) => n >= 0));
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!