mirror of
				https://github.com/LadybirdBrowser/ladybird.git
				synced 2025-11-04 07:10:57 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
describe("errors", () => {
 | 
						|
    test("first argument must be coercible to object", () => {
 | 
						|
        expect(() => {
 | 
						|
            new AggregateError();
 | 
						|
        }).toThrowWithMessage(TypeError, "ToObject on null or undefined");
 | 
						|
    });
 | 
						|
 | 
						|
    test("@@iterator throws", () => {
 | 
						|
        expect(() => {
 | 
						|
            new AggregateError({
 | 
						|
                [Symbol.iterator]() {
 | 
						|
                    throw Error("oops!");
 | 
						|
                },
 | 
						|
            });
 | 
						|
        }).toThrowWithMessage(Error, "oops!");
 | 
						|
    });
 | 
						|
});
 | 
						|
 | 
						|
describe("normal behavior", () => {
 | 
						|
    test("length is 2", () => {
 | 
						|
        expect(AggregateError).toHaveLength(2);
 | 
						|
    });
 | 
						|
 | 
						|
    test("name is AggregateError", () => {
 | 
						|
        expect(AggregateError.name).toBe("AggregateError");
 | 
						|
    });
 | 
						|
 | 
						|
    test("Prototype of the AggregateError constructor is the Error constructor", () => {
 | 
						|
        expect(Object.getPrototypeOf(AggregateError)).toBe(Error);
 | 
						|
    });
 | 
						|
 | 
						|
    test("Prototype of AggregateError.prototype is Error.prototype", () => {
 | 
						|
        expect(Object.getPrototypeOf(AggregateError.prototype)).toBe(Error.prototype);
 | 
						|
    });
 | 
						|
 | 
						|
    test("basic functionality", () => {
 | 
						|
        expect(AggregateError([])).toBeInstanceOf(AggregateError);
 | 
						|
        expect(new AggregateError([])).toBeInstanceOf(AggregateError);
 | 
						|
        expect(new AggregateError([]).toString()).toBe("AggregateError");
 | 
						|
        expect(new AggregateError([], "Foo").toString()).toBe("AggregateError: Foo");
 | 
						|
        expect(new AggregateError([]).hasOwnProperty("errors")).toBeTrue();
 | 
						|
        const errors = [1, 2, 3];
 | 
						|
        expect(new AggregateError(errors).errors).toEqual(errors);
 | 
						|
        expect(new AggregateError(errors).errors).not.toBe(errors);
 | 
						|
        expect(
 | 
						|
            new AggregateError({
 | 
						|
                [Symbol.iterator]: (i = 0) => ({
 | 
						|
                    next() {
 | 
						|
                        if (i < 3) {
 | 
						|
                            i++;
 | 
						|
                            return { value: i };
 | 
						|
                        }
 | 
						|
                        return { value: null, done: true };
 | 
						|
                    },
 | 
						|
                }),
 | 
						|
            }).errors
 | 
						|
        ).toEqual(errors);
 | 
						|
    });
 | 
						|
 | 
						|
    test("supports options object with cause", () => {
 | 
						|
        const cause = new Error();
 | 
						|
        const error = new AggregateError([], "test", { cause });
 | 
						|
        expect(error.hasOwnProperty("cause")).toBeTrue();
 | 
						|
        expect(error.cause).toBe(cause);
 | 
						|
    });
 | 
						|
});
 |