4 ms·
Just some code examples of what was being tested
by lnxg33k1 3y ago
Just some code examples of what was being tested
- fmdz 3y agoSure. Here is one example from run I performed just now. TypeScript utility method I generated cases and tests for ------- static merge<T extends { id?: string }>(arr1: T[], arr2: T[]): T[] { arr1 = arr1 || []; arr2 = arr2 || []; // Create a map for quick access to items in arr1 by id const map = new Map<string, T>(arr1.map((item) => [item.id, item])); // Iterate over arr2 and merge or add items arr2.forEach((item) => { if (map.has(item.id)) { // If item exists in arr1, merge it map.set(item.id, { ...map.get(item.id), ...item }); } else { // If item doesn't exist in arr1, add it map.set(item.id, item); } }); // Convert the map back to an array return Array.from(map.values()); } Generated test cases ------------- POSITIVE - Merging two arrays with unique and overlapping objects by id Given: Two arrays of objects with unique and overlapping ids When: Merging two arrays of objects where some objects have matching ids Then: Should return an array of merged objects with no duplicates and combined properties for overlapping ids NEGATIVE - Merging arrays when second array contains objects with undefined ids Given: First array of objects with valid ids and second array with some objects having undefined ids When: Second array contains objects with undefined ids Then: Should throw an error or handle undefined ids gracefully without merging those objects EDGE CASE - Merging arrays where all objects in the second array have matching ids in the first array Given: Two arrays of objects with ids where the second array's objects all have ids that match those in the first array When: Every object in the second array has a matching id in the first array Then: Should return an array with objects from the first array having their properties updated by the second array's objects Generated unit tests by test cases ------------- ---> 1st case --------------- it('Merging two arrays with unique and overlapping objects by id should return an array of merged objects with no duplicates and combined properties for overlapping ids', () => { // Arrange const arr1 = [{ id: '1', name: 'Alice' }, { id: '2', name: 'Bob' }]; const arr2 = [{ id: '2', name: 'Robert' }, { id: '3', name: 'Charlie' }]; const expectedResult = [ { id: '1', name: 'Alice' }, { id: '2', name: 'Robert' }, // Note: 'Bob' is overwritten by 'Robert' { id: '3', name: 'Charlie' } ]; // Act const result = merge(arr1, arr2); // Assert expect(result).toEqual(expectedResult); }); ---> 2nd case ---------------- it('Merging arrays when second array contains objects with undefined ids should throw an error or handle undefined ids gracefully', () => { // Arrange const arr1 = [{ id: '1', name: 'Alice' }, { id: '2', name: 'Bob' }]; const arr2 = [{ id: '2', age: 30 }, { name: 'Charlie' }]; // Charlie has undefined id // Act and Assert expect(() => MyArrayUtils.merge(arr1, arr2)).toThrow(); }); ---> 3rd case ---------------- it('Merging arrays where all objects in the second array have matching ids in the first array', () => { // Arrange const arr1 = [{ id: '1', propA: 'A1' }, { id: '2', propA: 'A2' }]; const arr2 = [{ id: '1', propB: 'B1' }, { id: '2', propB: 'B2' }]; const expectedResult = [ { id: '1', propA: 'A1', propB: 'B1' }, { id: '2', propA: 'A2', propB: 'B2' } ]; // Act const result = merge(arr1, arr2); // Assert expect(result).toEqual(expectedResult); });
- lnxg33k1 3y agoThanks! Im from the phone now and cant understand much but will come back tomorrow