@haskou/value-objects 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/errors/BaseError.d.ts +8 -0
- package/dist/src/errors/BaseError.d.ts.map +1 -0
- package/dist/src/errors/BaseError.js +22 -0
- package/dist/src/errors/BaseError.js.map +1 -0
- package/dist/src/errors/DomainError.d.ts +7 -0
- package/dist/src/errors/DomainError.d.ts.map +1 -0
- package/dist/src/errors/DomainError.js +15 -0
- package/dist/src/errors/DomainError.js.map +1 -0
- package/dist/src/errors/InvalidColorError.d.ts +5 -0
- package/dist/src/errors/InvalidColorError.d.ts.map +1 -0
- package/dist/src/errors/InvalidColorError.js +11 -0
- package/dist/src/errors/InvalidColorError.js.map +1 -0
- package/dist/src/errors/InvalidDayError.d.ts +5 -0
- package/dist/src/errors/InvalidDayError.d.ts.map +1 -0
- package/dist/src/errors/InvalidDayError.js +11 -0
- package/dist/src/errors/InvalidDayError.js.map +1 -0
- package/dist/src/errors/InvalidDayFormatError.d.ts +5 -0
- package/dist/src/errors/InvalidDayFormatError.d.ts.map +1 -0
- package/dist/src/errors/InvalidDayFormatError.js +11 -0
- package/dist/src/errors/InvalidDayFormatError.js.map +1 -0
- package/dist/src/errors/InvalidEmailError.d.ts +5 -0
- package/dist/src/errors/InvalidEmailError.d.ts.map +1 -0
- package/dist/src/errors/InvalidEmailError.js +11 -0
- package/dist/src/errors/InvalidEmailError.js.map +1 -0
- package/dist/src/errors/InvalidFormatError.d.ts +5 -0
- package/dist/src/errors/InvalidFormatError.d.ts.map +1 -0
- package/dist/src/errors/InvalidFormatError.js +11 -0
- package/dist/src/errors/InvalidFormatError.js.map +1 -0
- package/dist/src/errors/InvalidHashError.d.ts +5 -0
- package/dist/src/errors/InvalidHashError.d.ts.map +1 -0
- package/dist/src/errors/InvalidHashError.js +11 -0
- package/dist/src/errors/InvalidHashError.js.map +1 -0
- package/dist/src/errors/InvalidHourError.d.ts +5 -0
- package/dist/src/errors/InvalidHourError.d.ts.map +1 -0
- package/dist/src/errors/InvalidHourError.js +11 -0
- package/dist/src/errors/InvalidHourError.js.map +1 -0
- package/dist/src/errors/InvalidIntegerError.d.ts +5 -0
- package/dist/src/errors/InvalidIntegerError.d.ts.map +1 -0
- package/dist/src/errors/InvalidIntegerError.js +11 -0
- package/dist/src/errors/InvalidIntegerError.js.map +1 -0
- package/dist/src/errors/InvalidLatitudeError.d.ts +5 -0
- package/dist/src/errors/InvalidLatitudeError.d.ts.map +1 -0
- package/dist/src/errors/InvalidLatitudeError.js +11 -0
- package/dist/src/errors/InvalidLatitudeError.js.map +1 -0
- package/dist/src/errors/InvalidLengthError.d.ts +5 -0
- package/dist/src/errors/InvalidLengthError.d.ts.map +1 -0
- package/dist/src/errors/InvalidLengthError.js +11 -0
- package/dist/src/errors/InvalidLengthError.js.map +1 -0
- package/dist/src/errors/InvalidLongitudeError.d.ts +5 -0
- package/dist/src/errors/InvalidLongitudeError.d.ts.map +1 -0
- package/dist/src/errors/InvalidLongitudeError.js +11 -0
- package/dist/src/errors/InvalidLongitudeError.js.map +1 -0
- package/dist/src/errors/InvalidMinutesError.d.ts +5 -0
- package/dist/src/errors/InvalidMinutesError.d.ts.map +1 -0
- package/dist/src/errors/InvalidMinutesError.js +11 -0
- package/dist/src/errors/InvalidMinutesError.js.map +1 -0
- package/dist/src/errors/InvalidNumberError.d.ts +5 -0
- package/dist/src/errors/InvalidNumberError.d.ts.map +1 -0
- package/dist/src/errors/InvalidNumberError.js +11 -0
- package/dist/src/errors/InvalidNumberError.js.map +1 -0
- package/dist/src/errors/InvalidPositiveNumberError.d.ts +5 -0
- package/dist/src/errors/InvalidPositiveNumberError.d.ts.map +1 -0
- package/dist/src/errors/InvalidPositiveNumberError.js +11 -0
- package/dist/src/errors/InvalidPositiveNumberError.js.map +1 -0
- package/dist/src/errors/InvalidStringLengthError.d.ts +5 -0
- package/dist/src/errors/InvalidStringLengthError.d.ts.map +1 -0
- package/dist/src/errors/InvalidStringLengthError.js +11 -0
- package/dist/src/errors/InvalidStringLengthError.js.map +1 -0
- package/dist/src/errors/InvalidTimestampIntervalError.d.ts +6 -0
- package/dist/src/errors/InvalidTimestampIntervalError.d.ts.map +1 -0
- package/dist/src/errors/InvalidTimestampIntervalError.js +11 -0
- package/dist/src/errors/InvalidTimestampIntervalError.js.map +1 -0
- package/dist/src/errors/InvalidValueError.d.ts +5 -0
- package/dist/src/errors/InvalidValueError.d.ts.map +1 -0
- package/dist/src/errors/InvalidValueError.js +11 -0
- package/dist/src/errors/InvalidValueError.js.map +1 -0
- package/dist/src/errors/NullObjectError.d.ts +5 -0
- package/dist/src/errors/NullObjectError.d.ts.map +1 -0
- package/dist/src/errors/NullObjectError.js +12 -0
- package/dist/src/errors/NullObjectError.js.map +1 -0
- package/dist/src/errors/ValueNotInEnumError.d.ts +5 -0
- package/dist/src/errors/ValueNotInEnumError.d.ts.map +1 -0
- package/dist/src/errors/ValueNotInEnumError.js +11 -0
- package/dist/src/errors/ValueNotInEnumError.js.map +1 -0
- package/{src/errors/index.ts → dist/src/errors/index.d.ts} +1 -0
- package/dist/src/errors/index.d.ts.map +1 -0
- package/dist/src/errors/index.js +24 -0
- package/dist/src/errors/index.js.map +1 -0
- package/{src/index.ts → dist/src/index.d.ts} +1 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +9 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/interfaces/PrimitiveOf.d.ts +5 -0
- package/dist/src/interfaces/PrimitiveOf.d.ts.map +1 -0
- package/dist/src/interfaces/PrimitiveOf.js +3 -0
- package/dist/src/interfaces/PrimitiveOf.js.map +1 -0
- package/dist/src/interfaces/index.d.ts +2 -0
- package/dist/src/interfaces/index.d.ts.map +1 -0
- package/dist/src/interfaces/index.js +5 -0
- package/dist/src/interfaces/index.js.map +1 -0
- package/dist/src/patterns/Assert.d.ts +5 -0
- package/dist/src/patterns/Assert.d.ts.map +1 -0
- package/dist/src/patterns/Assert.js +11 -0
- package/dist/src/patterns/Assert.js.map +1 -0
- package/dist/src/patterns/index.d.ts +2 -0
- package/dist/src/patterns/index.d.ts.map +1 -0
- package/dist/src/patterns/index.js +5 -0
- package/dist/src/patterns/index.js.map +1 -0
- package/{src/types/Nullish.ts → dist/src/types/Nullish.d.ts} +1 -0
- package/dist/src/types/Nullish.d.ts.map +1 -0
- package/dist/src/types/Nullish.js +3 -0
- package/dist/src/types/Nullish.js.map +1 -0
- package/{src/types/Primitive.ts → dist/src/types/Primitive.d.ts} +1 -0
- package/dist/src/types/Primitive.d.ts.map +1 -0
- package/dist/src/types/Primitive.js +3 -0
- package/dist/src/types/Primitive.js.map +1 -0
- package/{src/types/index.ts → dist/src/types/index.d.ts} +1 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +6 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/value-objects/Color.d.ts +19 -0
- package/dist/src/value-objects/Color.d.ts.map +1 -0
- package/dist/src/value-objects/Color.js +37 -0
- package/dist/src/value-objects/Color.js.map +1 -0
- package/dist/src/value-objects/Email.d.ts +6 -0
- package/dist/src/value-objects/Email.d.ts.map +1 -0
- package/dist/src/value-objects/Email.js +21 -0
- package/dist/src/value-objects/Email.js.map +1 -0
- package/dist/src/value-objects/Enum.d.ts +9 -0
- package/dist/src/value-objects/Enum.d.ts.map +1 -0
- package/dist/src/value-objects/Enum.js +24 -0
- package/dist/src/value-objects/Enum.js.map +1 -0
- package/dist/src/value-objects/Integer.d.ts +6 -0
- package/dist/src/value-objects/Integer.d.ts.map +1 -0
- package/dist/src/value-objects/Integer.js +21 -0
- package/dist/src/value-objects/Integer.js.map +1 -0
- package/dist/src/value-objects/NullObject.d.ts +8 -0
- package/dist/src/value-objects/NullObject.d.ts.map +1 -0
- package/dist/src/value-objects/NullObject.js +43 -0
- package/dist/src/value-objects/NullObject.js.map +1 -0
- package/dist/src/value-objects/NumberValueObject.d.ts +15 -0
- package/dist/src/value-objects/NumberValueObject.d.ts.map +1 -0
- package/dist/src/value-objects/NumberValueObject.js +48 -0
- package/dist/src/value-objects/NumberValueObject.js.map +1 -0
- package/dist/src/value-objects/PositiveNumber.d.ts +6 -0
- package/dist/src/value-objects/PositiveNumber.d.ts.map +1 -0
- package/dist/src/value-objects/PositiveNumber.js +21 -0
- package/dist/src/value-objects/PositiveNumber.js.map +1 -0
- package/dist/src/value-objects/StringValueObject.d.ts +7 -0
- package/dist/src/value-objects/StringValueObject.d.ts.map +1 -0
- package/dist/src/value-objects/StringValueObject.js +24 -0
- package/dist/src/value-objects/StringValueObject.js.map +1 -0
- package/dist/src/value-objects/ValueObject.d.ts +12 -0
- package/dist/src/value-objects/ValueObject.d.ts.map +1 -0
- package/dist/src/value-objects/ValueObject.js +33 -0
- package/dist/src/value-objects/ValueObject.js.map +1 -0
- package/dist/src/value-objects/coordinates/Coordinates.d.ts +12 -0
- package/dist/src/value-objects/coordinates/Coordinates.d.ts.map +1 -0
- package/dist/src/value-objects/coordinates/Coordinates.js +28 -0
- package/dist/src/value-objects/coordinates/Coordinates.js.map +1 -0
- package/dist/src/value-objects/coordinates/Latitude.d.ts +8 -0
- package/dist/src/value-objects/coordinates/Latitude.d.ts.map +1 -0
- package/dist/src/value-objects/coordinates/Latitude.js +21 -0
- package/dist/src/value-objects/coordinates/Latitude.js.map +1 -0
- package/dist/src/value-objects/coordinates/Longitude.d.ts +8 -0
- package/dist/src/value-objects/coordinates/Longitude.d.ts.map +1 -0
- package/dist/src/value-objects/coordinates/Longitude.js +21 -0
- package/dist/src/value-objects/coordinates/Longitude.js.map +1 -0
- package/{src/value-objects/coordinates/index.ts → dist/src/value-objects/coordinates/index.d.ts} +1 -0
- package/dist/src/value-objects/coordinates/index.d.ts.map +1 -0
- package/dist/src/value-objects/coordinates/index.js +7 -0
- package/dist/src/value-objects/coordinates/index.js.map +1 -0
- package/dist/src/value-objects/hashes/Hash.d.ts +7 -0
- package/dist/src/value-objects/hashes/Hash.d.ts.map +1 -0
- package/dist/src/value-objects/hashes/Hash.js +19 -0
- package/dist/src/value-objects/hashes/Hash.js.map +1 -0
- package/dist/src/value-objects/hashes/MD5Hash.d.ts +8 -0
- package/dist/src/value-objects/hashes/MD5Hash.d.ts.map +1 -0
- package/dist/src/value-objects/hashes/MD5Hash.js +26 -0
- package/dist/src/value-objects/hashes/MD5Hash.js.map +1 -0
- package/dist/src/value-objects/hashes/SHA256Hash.d.ts +9 -0
- package/dist/src/value-objects/hashes/SHA256Hash.d.ts.map +1 -0
- package/dist/src/value-objects/hashes/SHA256Hash.js +29 -0
- package/dist/src/value-objects/hashes/SHA256Hash.js.map +1 -0
- package/dist/src/value-objects/hashes/SHA512Hash.d.ts +9 -0
- package/dist/src/value-objects/hashes/SHA512Hash.d.ts.map +1 -0
- package/dist/src/value-objects/hashes/SHA512Hash.js +29 -0
- package/dist/src/value-objects/hashes/SHA512Hash.js.map +1 -0
- package/{src/value-objects/hashes/index.ts → dist/src/value-objects/hashes/index.d.ts} +1 -0
- package/dist/src/value-objects/hashes/index.d.ts.map +1 -0
- package/dist/src/value-objects/hashes/index.js +8 -0
- package/dist/src/value-objects/hashes/index.js.map +1 -0
- package/dist/src/value-objects/ids/ShortId.d.ts +10 -0
- package/dist/src/value-objects/ids/ShortId.d.ts.map +1 -0
- package/dist/src/value-objects/ids/ShortId.js +30 -0
- package/dist/src/value-objects/ids/ShortId.js.map +1 -0
- package/dist/src/value-objects/ids/UUID.d.ts +10 -0
- package/dist/src/value-objects/ids/UUID.d.ts.map +1 -0
- package/dist/src/value-objects/ids/UUID.js +29 -0
- package/dist/src/value-objects/ids/UUID.js.map +1 -0
- package/{src/value-objects/ids/index.ts → dist/src/value-objects/ids/index.d.ts} +1 -0
- package/dist/src/value-objects/ids/index.d.ts.map +1 -0
- package/dist/src/value-objects/ids/index.js +6 -0
- package/dist/src/value-objects/ids/index.js.map +1 -0
- package/{src/value-objects/index.ts → dist/src/value-objects/index.d.ts} +1 -0
- package/dist/src/value-objects/index.d.ts.map +1 -0
- package/dist/src/value-objects/index.js +16 -0
- package/dist/src/value-objects/index.js.map +1 -0
- package/dist/src/value-objects/time/CalendarDay.d.ts +25 -0
- package/dist/src/value-objects/time/CalendarDay.d.ts.map +1 -0
- package/dist/src/value-objects/time/CalendarDay.js +74 -0
- package/dist/src/value-objects/time/CalendarDay.js.map +1 -0
- package/dist/src/value-objects/time/Day.d.ts +7 -0
- package/dist/src/value-objects/time/Day.d.ts.map +1 -0
- package/dist/src/value-objects/time/Day.js +18 -0
- package/dist/src/value-objects/time/Day.js.map +1 -0
- package/dist/src/value-objects/time/DayOfWeek.d.ts +34 -0
- package/dist/src/value-objects/time/DayOfWeek.d.ts.map +1 -0
- package/dist/src/value-objects/time/DayOfWeek.js +52 -0
- package/dist/src/value-objects/time/DayOfWeek.js.map +1 -0
- package/dist/src/value-objects/time/Duration.d.ts +23 -0
- package/dist/src/value-objects/time/Duration.d.ts.map +1 -0
- package/dist/src/value-objects/time/Duration.js +79 -0
- package/dist/src/value-objects/time/Duration.js.map +1 -0
- package/dist/src/value-objects/time/Hour.d.ts +15 -0
- package/dist/src/value-objects/time/Hour.d.ts.map +1 -0
- package/dist/src/value-objects/time/Hour.js +81 -0
- package/dist/src/value-objects/time/Hour.js.map +1 -0
- package/dist/src/value-objects/time/Month.d.ts +18 -0
- package/dist/src/value-objects/time/Month.d.ts.map +1 -0
- package/dist/src/value-objects/time/Month.js +41 -0
- package/dist/src/value-objects/time/Month.js.map +1 -0
- package/dist/src/value-objects/time/MonthOfYear.d.ts +17 -0
- package/dist/src/value-objects/time/MonthOfYear.d.ts.map +1 -0
- package/dist/src/value-objects/time/MonthOfYear.js +45 -0
- package/dist/src/value-objects/time/MonthOfYear.js.map +1 -0
- package/dist/src/value-objects/time/Timestamp.d.ts +51 -0
- package/dist/src/value-objects/time/Timestamp.d.ts.map +1 -0
- package/dist/src/value-objects/time/Timestamp.js +156 -0
- package/dist/src/value-objects/time/Timestamp.js.map +1 -0
- package/dist/src/value-objects/time/TimestampInterval.d.ts +26 -0
- package/dist/src/value-objects/time/TimestampInterval.d.ts.map +1 -0
- package/dist/src/value-objects/time/TimestampInterval.js +88 -0
- package/dist/src/value-objects/time/TimestampInterval.js.map +1 -0
- package/dist/src/value-objects/time/Year.d.ts +10 -0
- package/dist/src/value-objects/time/Year.d.ts.map +1 -0
- package/dist/src/value-objects/time/Year.js +26 -0
- package/dist/src/value-objects/time/Year.js.map +1 -0
- package/{src/value-objects/time/index.ts → dist/src/value-objects/time/index.d.ts} +1 -0
- package/dist/src/value-objects/time/index.d.ts.map +1 -0
- package/dist/src/value-objects/time/index.js +14 -0
- package/dist/src/value-objects/time/index.js.map +1 -0
- package/dist/tests/errors/BaseError.spec.d.ts +2 -0
- package/dist/tests/errors/BaseError.spec.d.ts.map +1 -0
- package/dist/tests/errors/BaseError.spec.js +54 -0
- package/dist/tests/errors/BaseError.spec.js.map +1 -0
- package/dist/tests/errors/DomainError.spec.d.ts +2 -0
- package/dist/tests/errors/DomainError.spec.d.ts.map +1 -0
- package/dist/tests/errors/DomainError.spec.js +47 -0
- package/dist/tests/errors/DomainError.spec.js.map +1 -0
- package/dist/tests/patterns/Assert.spec.d.ts +2 -0
- package/dist/tests/patterns/Assert.spec.d.ts.map +1 -0
- package/dist/tests/patterns/Assert.spec.js +27 -0
- package/dist/tests/patterns/Assert.spec.js.map +1 -0
- package/dist/tests/setup.jest.d.ts +2 -0
- package/dist/tests/setup.jest.d.ts.map +1 -0
- package/dist/tests/setup.jest.js +6 -0
- package/dist/tests/setup.jest.js.map +1 -0
- package/dist/tests/value-objects/Color.spec.d.ts +2 -0
- package/dist/tests/value-objects/Color.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/Color.spec.js +171 -0
- package/dist/tests/value-objects/Color.spec.js.map +1 -0
- package/dist/tests/value-objects/Email.spec.d.ts +2 -0
- package/dist/tests/value-objects/Email.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/Email.spec.js +117 -0
- package/dist/tests/value-objects/Email.spec.js.map +1 -0
- package/dist/tests/value-objects/Enum.spec.d.ts +2 -0
- package/dist/tests/value-objects/Enum.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/Enum.spec.js +233 -0
- package/dist/tests/value-objects/Enum.spec.js.map +1 -0
- package/dist/tests/value-objects/Integer.spec.d.ts +2 -0
- package/dist/tests/value-objects/Integer.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/Integer.spec.js +31 -0
- package/dist/tests/value-objects/Integer.spec.js.map +1 -0
- package/dist/tests/value-objects/NullObject.spec.d.ts +2 -0
- package/dist/tests/value-objects/NullObject.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/NullObject.spec.js +48 -0
- package/dist/tests/value-objects/NullObject.spec.js.map +1 -0
- package/dist/tests/value-objects/NumberValueObject.spec.d.ts +2 -0
- package/dist/tests/value-objects/NumberValueObject.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/NumberValueObject.spec.js +333 -0
- package/dist/tests/value-objects/NumberValueObject.spec.js.map +1 -0
- package/dist/tests/value-objects/PositiveNumber.spec.d.ts +2 -0
- package/dist/tests/value-objects/PositiveNumber.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/PositiveNumber.spec.js +209 -0
- package/dist/tests/value-objects/PositiveNumber.spec.js.map +1 -0
- package/dist/tests/value-objects/StringValueObject.spec.d.ts +2 -0
- package/dist/tests/value-objects/StringValueObject.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/StringValueObject.spec.js +104 -0
- package/dist/tests/value-objects/StringValueObject.spec.js.map +1 -0
- package/dist/tests/value-objects/coordinates/Coordinates.spec.d.ts +2 -0
- package/dist/tests/value-objects/coordinates/Coordinates.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/coordinates/Coordinates.spec.js +76 -0
- package/dist/tests/value-objects/coordinates/Coordinates.spec.js.map +1 -0
- package/dist/tests/value-objects/coordinates/Latitude.spec.d.ts +2 -0
- package/dist/tests/value-objects/coordinates/Latitude.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/coordinates/Latitude.spec.js +23 -0
- package/dist/tests/value-objects/coordinates/Latitude.spec.js.map +1 -0
- package/dist/tests/value-objects/coordinates/Longitude.spec.d.ts +2 -0
- package/dist/tests/value-objects/coordinates/Longitude.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/coordinates/Longitude.spec.js +23 -0
- package/dist/tests/value-objects/coordinates/Longitude.spec.js.map +1 -0
- package/dist/tests/value-objects/hashes/Hashes.spec.d.ts +2 -0
- package/dist/tests/value-objects/hashes/Hashes.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/hashes/Hashes.spec.js +107 -0
- package/dist/tests/value-objects/hashes/Hashes.spec.js.map +1 -0
- package/dist/tests/value-objects/hashes/MD5Hash.spec.d.ts +2 -0
- package/dist/tests/value-objects/hashes/MD5Hash.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/hashes/MD5Hash.spec.js +147 -0
- package/dist/tests/value-objects/hashes/MD5Hash.spec.js.map +1 -0
- package/dist/tests/value-objects/hashes/SHA256Hash.spec.d.ts +2 -0
- package/dist/tests/value-objects/hashes/SHA256Hash.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/hashes/SHA256Hash.spec.js +147 -0
- package/dist/tests/value-objects/hashes/SHA256Hash.spec.js.map +1 -0
- package/dist/tests/value-objects/hashes/SHA512Hash.spec.d.ts +2 -0
- package/dist/tests/value-objects/hashes/SHA512Hash.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/hashes/SHA512Hash.spec.js +147 -0
- package/dist/tests/value-objects/hashes/SHA512Hash.spec.js.map +1 -0
- package/dist/tests/value-objects/ids/ShortId.spec.d.ts +2 -0
- package/dist/tests/value-objects/ids/ShortId.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/ids/ShortId.spec.js +30 -0
- package/dist/tests/value-objects/ids/ShortId.spec.js.map +1 -0
- package/dist/tests/value-objects/ids/UUID.spec.d.ts +2 -0
- package/dist/tests/value-objects/ids/UUID.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/ids/UUID.spec.js +30 -0
- package/dist/tests/value-objects/ids/UUID.spec.js.map +1 -0
- package/dist/tests/value-objects/time/CalendarDay.spec.d.ts +2 -0
- package/dist/tests/value-objects/time/CalendarDay.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/time/CalendarDay.spec.js +149 -0
- package/dist/tests/value-objects/time/CalendarDay.spec.js.map +1 -0
- package/dist/tests/value-objects/time/Day.spec.d.ts +2 -0
- package/dist/tests/value-objects/time/Day.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/time/Day.spec.js +28 -0
- package/dist/tests/value-objects/time/Day.spec.js.map +1 -0
- package/dist/tests/value-objects/time/DayOfWeek.spec.d.ts +2 -0
- package/dist/tests/value-objects/time/DayOfWeek.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/time/DayOfWeek.spec.js +44 -0
- package/dist/tests/value-objects/time/DayOfWeek.spec.js.map +1 -0
- package/dist/tests/value-objects/time/Duration.spec.d.ts +2 -0
- package/dist/tests/value-objects/time/Duration.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/time/Duration.spec.js +255 -0
- package/dist/tests/value-objects/time/Duration.spec.js.map +1 -0
- package/dist/tests/value-objects/time/Hour.spec.d.ts +2 -0
- package/dist/tests/value-objects/time/Hour.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/time/Hour.spec.js +168 -0
- package/dist/tests/value-objects/time/Hour.spec.js.map +1 -0
- package/dist/tests/value-objects/time/MonthOfYear.spec.d.ts +2 -0
- package/dist/tests/value-objects/time/MonthOfYear.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/time/MonthOfYear.spec.js +93 -0
- package/dist/tests/value-objects/time/MonthOfYear.spec.js.map +1 -0
- package/dist/tests/value-objects/time/Timestamp.spec.d.ts +2 -0
- package/dist/tests/value-objects/time/Timestamp.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/time/Timestamp.spec.js +391 -0
- package/dist/tests/value-objects/time/Timestamp.spec.js.map +1 -0
- package/dist/tests/value-objects/time/TimestampInterval.spec.d.ts +2 -0
- package/dist/tests/value-objects/time/TimestampInterval.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/time/TimestampInterval.spec.js +270 -0
- package/dist/tests/value-objects/time/TimestampInterval.spec.js.map +1 -0
- package/dist/tests/value-objects/time/Year.spec.d.ts +2 -0
- package/dist/tests/value-objects/time/Year.spec.d.ts.map +1 -0
- package/dist/tests/value-objects/time/Year.spec.js +41 -0
- package/dist/tests/value-objects/time/Year.spec.js.map +1 -0
- package/package.json +6 -2
- package/.editorconfig +0 -15
- package/.eslintignore +0 -3
- package/.eslintrc.json +0 -218
- package/.prettierrc.json +0 -13
- package/TECHNICAL_DOCUMENTATION.md +0 -1257
- package/jest.config.ts +0 -30
- package/src/errors/BaseError.ts +0 -20
- package/src/errors/DomainError.ts +0 -12
- package/src/errors/InvalidColorError.ts +0 -7
- package/src/errors/InvalidDayError.ts +0 -7
- package/src/errors/InvalidDayFormatError.ts +0 -7
- package/src/errors/InvalidEmailError.ts +0 -7
- package/src/errors/InvalidFormatError.ts +0 -7
- package/src/errors/InvalidHashError.ts +0 -7
- package/src/errors/InvalidHourError.ts +0 -7
- package/src/errors/InvalidIntegerError.ts +0 -7
- package/src/errors/InvalidLatitudeError.ts +0 -7
- package/src/errors/InvalidLengthError.ts +0 -9
- package/src/errors/InvalidLongitudeError.ts +0 -7
- package/src/errors/InvalidMinutesError.ts +0 -7
- package/src/errors/InvalidNumberError.ts +0 -7
- package/src/errors/InvalidPositiveNumberError.ts +0 -7
- package/src/errors/InvalidStringLengthError.ts +0 -9
- package/src/errors/InvalidTimestampIntervalError.ts +0 -10
- package/src/errors/InvalidValueError.ts +0 -7
- package/src/errors/NullObjectError.ts +0 -8
- package/src/errors/ValueNotInEnumError.ts +0 -9
- package/src/interfaces/PrimitiveOf.ts +0 -5
- package/src/interfaces/index.ts +0 -1
- package/src/patterns/Assert.ts +0 -15
- package/src/patterns/index.ts +0 -1
- package/src/value-objects/Color.ts +0 -39
- package/src/value-objects/Email.ts +0 -23
- package/src/value-objects/Enum.ts +0 -31
- package/src/value-objects/Integer.ts +0 -22
- package/src/value-objects/NullObject.ts +0 -60
- package/src/value-objects/NumberValueObject.ts +0 -56
- package/src/value-objects/PositiveNumber.ts +0 -20
- package/src/value-objects/StringValueObject.ts +0 -27
- package/src/value-objects/ValueObject.ts +0 -39
- package/src/value-objects/coordinates/Coordinates.ts +0 -30
- package/src/value-objects/coordinates/Latitude.ts +0 -22
- package/src/value-objects/coordinates/Longitude.ts +0 -25
- package/src/value-objects/hashes/Hash.ts +0 -19
- package/src/value-objects/hashes/MD5Hash.ts +0 -32
- package/src/value-objects/hashes/SHA256Hash.ts +0 -38
- package/src/value-objects/hashes/SHA512Hash.ts +0 -38
- package/src/value-objects/ids/ShortId.ts +0 -34
- package/src/value-objects/ids/UUID.ts +0 -34
- package/src/value-objects/time/CalendarDay.ts +0 -91
- package/src/value-objects/time/Day.ts +0 -17
- package/src/value-objects/time/DayOfWeek.ts +0 -60
- package/src/value-objects/time/Duration.ts +0 -142
- package/src/value-objects/time/Hour.ts +0 -105
- package/src/value-objects/time/Month.ts +0 -39
- package/src/value-objects/time/MonthOfYear.ts +0 -52
- package/src/value-objects/time/Timestamp.ts +0 -208
- package/src/value-objects/time/TimestampInterval.ts +0 -122
- package/src/value-objects/time/Year.ts +0 -27
- package/tests/errors/BaseError.spec.ts +0 -63
- package/tests/errors/DomainError.spec.ts +0 -52
- package/tests/patterns/Assert.spec.ts +0 -29
- package/tests/setup.jest.ts +0 -2
- package/tests/value-objects/Color.spec.ts +0 -214
- package/tests/value-objects/Email.spec.ts +0 -141
- package/tests/value-objects/Enum.spec.ts +0 -293
- package/tests/value-objects/Integer.spec.ts +0 -38
- package/tests/value-objects/NullObject.spec.ts +0 -55
- package/tests/value-objects/NumberValueObject.spec.ts +0 -446
- package/tests/value-objects/PositiveNumber.spec.ts +0 -274
- package/tests/value-objects/StringValueObject.spec.ts +0 -135
- package/tests/value-objects/coordinates/Coordinates.spec.ts +0 -90
- package/tests/value-objects/coordinates/Latitude.spec.ts +0 -24
- package/tests/value-objects/coordinates/Longitude.spec.ts +0 -24
- package/tests/value-objects/hashes/Hashes.spec.ts +0 -139
- package/tests/value-objects/hashes/MD5Hash.spec.ts +0 -187
- package/tests/value-objects/hashes/SHA256Hash.spec.ts +0 -220
- package/tests/value-objects/hashes/SHA512Hash.spec.ts +0 -220
- package/tests/value-objects/ids/ShortId.spec.ts +0 -34
- package/tests/value-objects/ids/UUID.spec.ts +0 -37
- package/tests/value-objects/time/CalendarDay.spec.ts +0 -182
- package/tests/value-objects/time/Day.spec.ts +0 -29
- package/tests/value-objects/time/DayOfWeek.spec.ts +0 -71
- package/tests/value-objects/time/Duration.spec.ts +0 -278
- package/tests/value-objects/time/Hour.spec.ts +0 -197
- package/tests/value-objects/time/MonthOfYear.spec.ts +0 -111
- package/tests/value-objects/time/Timestamp.spec.ts +0 -497
- package/tests/value-objects/time/TimestampInterval.spec.ts +0 -383
- package/tests/value-objects/time/Year.spec.ts +0 -48
- package/tsconfig.jest.json +0 -33
- package/tsconfig.json +0 -42
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const src_1 = require("../../src");
|
|
4
|
+
describe('Color', () => {
|
|
5
|
+
describe('constructor', () => {
|
|
6
|
+
it('should return a NullValueObject when a Nullish is received', () => {
|
|
7
|
+
expect(() => new src_1.Color(undefined)).not.toThrow();
|
|
8
|
+
expect(src_1.NullObject.isNullObject(new src_1.Color(undefined))).toBeTrue();
|
|
9
|
+
expect(src_1.NullObject.isNullObject(new src_1.Color(null))).toBeTrue();
|
|
10
|
+
});
|
|
11
|
+
const validColors = [
|
|
12
|
+
'#FF0000',
|
|
13
|
+
'#00FF00',
|
|
14
|
+
'#0000FF',
|
|
15
|
+
'#FFFFFF',
|
|
16
|
+
'#000000',
|
|
17
|
+
'#FFA500',
|
|
18
|
+
'#000',
|
|
19
|
+
'#FFF',
|
|
20
|
+
];
|
|
21
|
+
it.each(validColors)('should create a Color instance for valid hex color codes', (color) => {
|
|
22
|
+
expect(() => new src_1.Color(color)).not.toThrow();
|
|
23
|
+
});
|
|
24
|
+
const invalidColors = [
|
|
25
|
+
'#GGGGGG',
|
|
26
|
+
'123456',
|
|
27
|
+
'#12345',
|
|
28
|
+
'#1234567',
|
|
29
|
+
'red',
|
|
30
|
+
'123',
|
|
31
|
+
'#HHH',
|
|
32
|
+
'',
|
|
33
|
+
];
|
|
34
|
+
it.each(invalidColors)('should create a Color instance for valid hex color codes', (color) => {
|
|
35
|
+
expect(() => new src_1.Color(color)).toThrow(src_1.InvalidColorError);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('predefined static colors', () => {
|
|
39
|
+
it('should have correct values for predefined colors', () => {
|
|
40
|
+
expect(src_1.Color.RED).toMatchObject({ value: '#FF0000' });
|
|
41
|
+
expect(src_1.Color.GREEN).toMatchObject({ value: '#00FF00' });
|
|
42
|
+
expect(src_1.Color.BLUE).toMatchObject({ value: '#0000FF' });
|
|
43
|
+
expect(src_1.Color.BLACK).toMatchObject({ value: '#000000' });
|
|
44
|
+
expect(src_1.Color.WHITE).toMatchObject({ value: '#FFFFFF' });
|
|
45
|
+
expect(src_1.Color.YELLOW).toMatchObject({ value: '#FFFF00' });
|
|
46
|
+
expect(src_1.Color.CYAN).toMatchObject({ value: '#00FFFF' });
|
|
47
|
+
expect(src_1.Color.MAGENTA).toMatchObject({ value: '#FF00FF' });
|
|
48
|
+
expect(src_1.Color.ORANGE).toMatchObject({ value: '#FFA500' });
|
|
49
|
+
expect(src_1.Color.PURPLE).toMatchObject({ value: '#800080' });
|
|
50
|
+
expect(src_1.Color.PINK).toMatchObject({ value: '#FFC0CB' });
|
|
51
|
+
expect(src_1.Color.BROWN).toMatchObject({ value: '#A52A2A' });
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe('equality', () => {
|
|
55
|
+
it('should return true for two Color instances with the same value', () => {
|
|
56
|
+
const color1 = new src_1.Color('#FF0000');
|
|
57
|
+
const color2 = new src_1.Color('#FF0000');
|
|
58
|
+
expect(color1.isEqual(color2)).toBe(true);
|
|
59
|
+
});
|
|
60
|
+
it('should return false for two Color instances with different values', () => {
|
|
61
|
+
const color1 = new src_1.Color('#FF0000');
|
|
62
|
+
const color2 = new src_1.Color('#00FF00');
|
|
63
|
+
expect(color1.isEqual(color2)).toBe(false);
|
|
64
|
+
});
|
|
65
|
+
it('should return true for two Color instances with the same value regardless of case', () => {
|
|
66
|
+
const color1 = new src_1.Color('#FF0000');
|
|
67
|
+
const color2 = new src_1.Color('#ff0000');
|
|
68
|
+
expect(color1.isEqual(color2)).toBe(true);
|
|
69
|
+
});
|
|
70
|
+
it('should return false when comparing a Color instance with null', () => {
|
|
71
|
+
const color1 = new src_1.Color('#FF0000');
|
|
72
|
+
expect(color1.isEqual(null)).toBe(false);
|
|
73
|
+
});
|
|
74
|
+
it('should return false when comparing a Color instance with undefined', () => {
|
|
75
|
+
const color1 = new src_1.Color('#FF0000');
|
|
76
|
+
expect(color1.isEqual(undefined)).toBe(false);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
describe('inherited methods from StringValueObject', () => {
|
|
80
|
+
it('should return the correct string value using toString()', () => {
|
|
81
|
+
const color = new src_1.Color('#ABCDEF');
|
|
82
|
+
expect(color.toString()).toBe('#ABCDEF');
|
|
83
|
+
});
|
|
84
|
+
it('should return the correct primitive value using valueOf()', () => {
|
|
85
|
+
const color = new src_1.Color('#123456');
|
|
86
|
+
expect(color.valueOf()).toBe('#123456');
|
|
87
|
+
});
|
|
88
|
+
it('should be instance of StringValueObject', () => {
|
|
89
|
+
const color = new src_1.Color('#FFFFFF');
|
|
90
|
+
expect(color instanceof src_1.StringValueObject).toBe(true);
|
|
91
|
+
});
|
|
92
|
+
it('should be instance of Color', () => {
|
|
93
|
+
const color = new src_1.Color('#000000');
|
|
94
|
+
expect(color instanceof src_1.Color).toBe(true);
|
|
95
|
+
});
|
|
96
|
+
it('should compare equality using inherited equals() method', () => {
|
|
97
|
+
const color1 = new src_1.Color('#ABCDEF');
|
|
98
|
+
const color2 = new src_1.Color('#ABCDEF');
|
|
99
|
+
expect(color1.isEqual(color2)).toBe(true);
|
|
100
|
+
});
|
|
101
|
+
it('should compare inequality using inherited equals() method', () => {
|
|
102
|
+
const color1 = new src_1.Color('#ABCDEF');
|
|
103
|
+
const color2 = new src_1.Color('#123456');
|
|
104
|
+
expect(color1.isEqual(color2)).toBe(false);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
describe('inheritance and StringValueObject behavior', () => {
|
|
108
|
+
it('should implement valueOf() method correctly from StringValueObject', () => {
|
|
109
|
+
const value = '#ABCDEF';
|
|
110
|
+
const color = new src_1.Color(value);
|
|
111
|
+
expect(color.valueOf()).toBe(value);
|
|
112
|
+
});
|
|
113
|
+
it('should implement toString() method correctly from StringValueObject', () => {
|
|
114
|
+
const value = '#123456';
|
|
115
|
+
const color = new src_1.Color(value);
|
|
116
|
+
expect(color.toString()).toBe(value);
|
|
117
|
+
});
|
|
118
|
+
it('should implement isEmpty() method correctly from StringValueObject', () => {
|
|
119
|
+
// Color cannot be empty due to validation, but method should exist
|
|
120
|
+
const color = new src_1.Color('#FFF');
|
|
121
|
+
expect(color.isEmpty()).toBeFalse();
|
|
122
|
+
expect(typeof color.isEmpty).toBe('function');
|
|
123
|
+
});
|
|
124
|
+
it('should override isEqual() method with case-insensitive comparison', () => {
|
|
125
|
+
const color1 = new src_1.Color('#FF0000');
|
|
126
|
+
const color2 = new src_1.Color('#ff0000');
|
|
127
|
+
const color3 = new src_1.Color('#00FF00');
|
|
128
|
+
expect(color1.isEqual(color2)).toBeTrue();
|
|
129
|
+
expect(color1.isEqual(color3)).toBeFalse();
|
|
130
|
+
});
|
|
131
|
+
it('should accept StringValueObject in constructor', () => {
|
|
132
|
+
const stringValueObject = new src_1.StringValueObject('#FFFFFF');
|
|
133
|
+
const color = new src_1.Color(stringValueObject);
|
|
134
|
+
expect(color.toString()).toBe('#FFFFFF');
|
|
135
|
+
expect(color.valueOf()).toBe('#FFFFFF');
|
|
136
|
+
});
|
|
137
|
+
it('should validate color format when constructed from StringValueObject', () => {
|
|
138
|
+
const invalidStringValueObject = new src_1.StringValueObject('invalid-color');
|
|
139
|
+
expect(() => new src_1.Color(invalidStringValueObject)).toThrow(src_1.InvalidColorError);
|
|
140
|
+
});
|
|
141
|
+
it('should implement clone() method correctly inherited from ValueObject', () => {
|
|
142
|
+
const originalValue = '#ABCDEF';
|
|
143
|
+
const original = new src_1.Color(originalValue);
|
|
144
|
+
const cloned = original.clone();
|
|
145
|
+
expect(cloned).toBeInstanceOf(src_1.Color);
|
|
146
|
+
expect(cloned).toBeInstanceOf(src_1.StringValueObject);
|
|
147
|
+
expect(cloned.valueOf()).toBe(originalValue);
|
|
148
|
+
expect(cloned.toString()).toBe(originalValue);
|
|
149
|
+
expect(cloned.isEqual(original)).toBeTrue();
|
|
150
|
+
expect(cloned).not.toBe(original); // Different instances
|
|
151
|
+
});
|
|
152
|
+
it('should clone static predefined colors correctly', () => {
|
|
153
|
+
const originalRed = src_1.Color.RED;
|
|
154
|
+
const clonedRed = originalRed.clone();
|
|
155
|
+
expect(clonedRed).toBeInstanceOf(src_1.Color);
|
|
156
|
+
expect(clonedRed.valueOf()).toBe('#FF0000');
|
|
157
|
+
expect(clonedRed.isEqual(originalRed)).toBeTrue();
|
|
158
|
+
expect(clonedRed).not.toBe(originalRed);
|
|
159
|
+
});
|
|
160
|
+
it('should maintain color validation in cloned instances', () => {
|
|
161
|
+
const original = new src_1.Color('#123ABC');
|
|
162
|
+
const cloned = original.clone();
|
|
163
|
+
expect(cloned).toBeInstanceOf(src_1.Color);
|
|
164
|
+
expect(cloned.valueOf()).toBe('#123ABC');
|
|
165
|
+
// Cloned instance should still be a valid color
|
|
166
|
+
expect(() => cloned.toString()).not.toThrow();
|
|
167
|
+
expect(cloned.toString()).toBe('#123ABC');
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
//# sourceMappingURL=Color.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Color.spec.js","sourceRoot":"","sources":["../../../tests/value-objects/Color.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Email.spec.d.ts","sourceRoot":"","sources":["../../../tests/value-objects/Email.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const src_1 = require("../../src");
|
|
4
|
+
const NullObject_1 = require("../../src/value-objects/NullObject");
|
|
5
|
+
describe('Email', () => {
|
|
6
|
+
describe('constructor', () => {
|
|
7
|
+
it('should return a NullValueObject when a Nullish is received', () => {
|
|
8
|
+
expect(() => new src_1.Email(undefined)).not.toThrow();
|
|
9
|
+
expect(NullObject_1.NullObject.isNullObject(new src_1.Email(undefined))).toBeTrue();
|
|
10
|
+
});
|
|
11
|
+
const validEmails = [
|
|
12
|
+
'user@example.com',
|
|
13
|
+
'test.email@domain.org',
|
|
14
|
+
'user+tag@example.co.uk',
|
|
15
|
+
'first.last@subdomain.example.com',
|
|
16
|
+
'user_name@example-domain.com',
|
|
17
|
+
'test123@example.io',
|
|
18
|
+
'admin@company.travel',
|
|
19
|
+
'contact@site.museum',
|
|
20
|
+
'info@domain.photography',
|
|
21
|
+
];
|
|
22
|
+
it.each(validEmails)('should create an Email instance for valid email addresses', (email) => {
|
|
23
|
+
expect(() => new src_1.Email(email)).not.toThrow();
|
|
24
|
+
expect(new src_1.Email(email).toString()).toBe(email);
|
|
25
|
+
});
|
|
26
|
+
const invalidEmails = [
|
|
27
|
+
'invalid-email',
|
|
28
|
+
'@domain.com',
|
|
29
|
+
'user@',
|
|
30
|
+
'user@domain',
|
|
31
|
+
'user.domain.com',
|
|
32
|
+
'user@domain.',
|
|
33
|
+
'user@.com',
|
|
34
|
+
'user@@domain.com',
|
|
35
|
+
'user@domain..com',
|
|
36
|
+
'user name@domain.com',
|
|
37
|
+
'user@domain.c',
|
|
38
|
+
'user@domain.toolongextension',
|
|
39
|
+
'',
|
|
40
|
+
];
|
|
41
|
+
it.each(invalidEmails)('should throw InvalidEmailError for invalid email addresses', (email) => {
|
|
42
|
+
expect(() => new src_1.Email(email)).toThrow(src_1.InvalidEmailError);
|
|
43
|
+
});
|
|
44
|
+
it('should accept another StringValueObject', () => {
|
|
45
|
+
const emailString = new src_1.StringValueObject('user@example.com');
|
|
46
|
+
const email = new src_1.Email(emailString);
|
|
47
|
+
expect(email.toString()).toBe('user@example.com');
|
|
48
|
+
});
|
|
49
|
+
it('should validate email format when constructed from StringValueObject', () => {
|
|
50
|
+
const invalidEmailString = new src_1.StringValueObject('invalid-email');
|
|
51
|
+
expect(() => new src_1.Email(invalidEmailString)).toThrow(src_1.InvalidEmailError);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe('inheritance and StringValueObject behavior', () => {
|
|
55
|
+
it('should inherit from StringValueObject', () => {
|
|
56
|
+
const email = new src_1.Email('test@example.com');
|
|
57
|
+
expect(email).toBeInstanceOf(src_1.Email);
|
|
58
|
+
expect(email).toBeInstanceOf(src_1.StringValueObject);
|
|
59
|
+
expect(email.valueOf).toBeDefined();
|
|
60
|
+
expect(email.isEqual).toBeDefined();
|
|
61
|
+
expect(email.toString).toBeDefined();
|
|
62
|
+
expect(email.isEmpty).toBeDefined();
|
|
63
|
+
});
|
|
64
|
+
it('should implement valueOf() method correctly from StringValueObject', () => {
|
|
65
|
+
const emailValue = 'admin@company.org';
|
|
66
|
+
const email = new src_1.Email(emailValue);
|
|
67
|
+
expect(email.valueOf()).toBe(emailValue);
|
|
68
|
+
});
|
|
69
|
+
it('should implement toString() method correctly from StringValueObject', () => {
|
|
70
|
+
const emailValue = 'contact@website.net';
|
|
71
|
+
const email = new src_1.Email(emailValue);
|
|
72
|
+
expect(email.toString()).toBe(emailValue);
|
|
73
|
+
});
|
|
74
|
+
it('should implement isEmpty() method correctly from StringValueObject', () => {
|
|
75
|
+
// Email cannot be empty due to validation, but method should exist
|
|
76
|
+
const email = new src_1.Email('user@domain.com');
|
|
77
|
+
expect(email.isEmpty()).toBeFalse();
|
|
78
|
+
expect(typeof email.isEmpty).toBe('function');
|
|
79
|
+
});
|
|
80
|
+
it('should implement isEqual() method correctly', () => {
|
|
81
|
+
const emailValue = 'test@example.com';
|
|
82
|
+
const email1 = new src_1.Email(emailValue);
|
|
83
|
+
const email2 = new src_1.Email(emailValue);
|
|
84
|
+
const email3 = new src_1.Email('different@example.com');
|
|
85
|
+
expect(email1.isEqual(email2)).toBeTrue();
|
|
86
|
+
expect(email1.isEqual(email3)).toBeFalse();
|
|
87
|
+
expect(email1.isEqual(emailValue)).toBeTrue();
|
|
88
|
+
expect(email1.isEqual('different@example.com')).toBeFalse();
|
|
89
|
+
});
|
|
90
|
+
it('should compare with string values using isEqual', () => {
|
|
91
|
+
const email = new src_1.Email('hello@world.com');
|
|
92
|
+
expect(email.isEqual('hello@world.com')).toBeTrue();
|
|
93
|
+
expect(email.isEqual('goodbye@world.com')).toBeFalse();
|
|
94
|
+
});
|
|
95
|
+
it('should implement clone() method correctly inherited from ValueObject', () => {
|
|
96
|
+
const originalValue = 'clone@test.com';
|
|
97
|
+
const original = new src_1.Email(originalValue);
|
|
98
|
+
const cloned = original.clone();
|
|
99
|
+
expect(cloned).toBeInstanceOf(src_1.Email);
|
|
100
|
+
expect(cloned).toBeInstanceOf(src_1.StringValueObject);
|
|
101
|
+
expect(cloned.valueOf()).toBe(originalValue);
|
|
102
|
+
expect(cloned.toString()).toBe(originalValue);
|
|
103
|
+
expect(cloned.isEqual(original)).toBeTrue();
|
|
104
|
+
expect(cloned).not.toBe(original); // Different instances
|
|
105
|
+
});
|
|
106
|
+
it('should maintain email validation in cloned instances', () => {
|
|
107
|
+
const original = new src_1.Email('valid@example.com');
|
|
108
|
+
const cloned = original.clone();
|
|
109
|
+
expect(cloned).toBeInstanceOf(src_1.Email);
|
|
110
|
+
expect(cloned.valueOf()).toBe('valid@example.com');
|
|
111
|
+
// Cloned instance should still be a valid email
|
|
112
|
+
expect(() => cloned.toString()).not.toThrow();
|
|
113
|
+
expect(cloned.toString()).toBe('valid@example.com');
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
//# sourceMappingURL=Email.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Email.spec.js","sourceRoot":"","sources":["../../../tests/value-objects/Email.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Enum.spec.d.ts","sourceRoot":"","sources":["../../../tests/value-objects/Enum.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const src_1 = require("../../src");
|
|
4
|
+
class StringEnum extends src_1.Enum {
|
|
5
|
+
getValues() {
|
|
6
|
+
return ['A', 'B', 'C'];
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
class NumberEnum extends src_1.Enum {
|
|
10
|
+
getValues() {
|
|
11
|
+
return [1, 2, 3];
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
class MixedEnum extends src_1.Enum {
|
|
15
|
+
getValues() {
|
|
16
|
+
return ['1', 2];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
var StatusEnum;
|
|
20
|
+
(function (StatusEnum) {
|
|
21
|
+
StatusEnum["ACTIVE"] = "active";
|
|
22
|
+
StatusEnum["INACTIVE"] = "inactive";
|
|
23
|
+
StatusEnum["PENDING"] = "pending";
|
|
24
|
+
})(StatusEnum || (StatusEnum = {}));
|
|
25
|
+
class Status extends src_1.Enum {
|
|
26
|
+
getValues() {
|
|
27
|
+
return Object.values(StatusEnum);
|
|
28
|
+
}
|
|
29
|
+
// Static factory methods for convenience
|
|
30
|
+
static ACTIVE = () => new Status(StatusEnum.ACTIVE);
|
|
31
|
+
static INACTIVE = () => new Status(StatusEnum.INACTIVE);
|
|
32
|
+
static PENDING = () => new Status(StatusEnum.PENDING);
|
|
33
|
+
}
|
|
34
|
+
describe('Enum', () => {
|
|
35
|
+
describe('constructor', () => {
|
|
36
|
+
it('should return a Null when a Nullish is received', () => {
|
|
37
|
+
expect(() => new StringEnum(undefined)).not.toThrow();
|
|
38
|
+
expect(src_1.NullObject.isNullObject(new StringEnum(undefined))).toBeTrue();
|
|
39
|
+
expect(src_1.NullObject.isNullObject(new StringEnum(null))).toBeTrue();
|
|
40
|
+
});
|
|
41
|
+
it('should accept valid string enum values', () => {
|
|
42
|
+
expect(() => new StringEnum('A')).not.toThrow();
|
|
43
|
+
expect(() => new StringEnum('B')).not.toThrow();
|
|
44
|
+
expect(() => new StringEnum('C')).not.toThrow();
|
|
45
|
+
const enumValue = new StringEnum('A');
|
|
46
|
+
expect(enumValue.valueOf()).toBe('A');
|
|
47
|
+
expect(enumValue.toString()).toBe('A');
|
|
48
|
+
});
|
|
49
|
+
it('should accept valid number enum values', () => {
|
|
50
|
+
expect(() => new NumberEnum(1)).not.toThrow();
|
|
51
|
+
expect(() => new NumberEnum(2)).not.toThrow();
|
|
52
|
+
expect(() => new NumberEnum(3)).not.toThrow();
|
|
53
|
+
const enumValue = new NumberEnum(2);
|
|
54
|
+
expect(enumValue.valueOf()).toBe(2);
|
|
55
|
+
expect(enumValue.toString()).toBe('2');
|
|
56
|
+
});
|
|
57
|
+
it('should accept valid mixed enum values', () => {
|
|
58
|
+
expect(() => new MixedEnum('1')).not.toThrow();
|
|
59
|
+
expect(() => new MixedEnum(2)).not.toThrow();
|
|
60
|
+
const stringValue = new MixedEnum('1');
|
|
61
|
+
const numberValue = new MixedEnum(2);
|
|
62
|
+
expect(stringValue.valueOf()).toBe('1');
|
|
63
|
+
expect(numberValue.valueOf()).toBe(2);
|
|
64
|
+
});
|
|
65
|
+
it('should reject invalid string enum values', () => {
|
|
66
|
+
expect(() => new StringEnum('D')).toThrow(src_1.ValueNotInEnumError);
|
|
67
|
+
expect(() => new StringEnum('X')).toThrow(src_1.ValueNotInEnumError);
|
|
68
|
+
expect(() => new StringEnum('')).toThrow(src_1.ValueNotInEnumError);
|
|
69
|
+
});
|
|
70
|
+
it('should reject invalid number enum values', () => {
|
|
71
|
+
expect(() => new NumberEnum(0)).toThrow(src_1.ValueNotInEnumError);
|
|
72
|
+
expect(() => new NumberEnum(4)).toThrow(src_1.ValueNotInEnumError);
|
|
73
|
+
expect(() => new NumberEnum(-1)).toThrow(src_1.ValueNotInEnumError);
|
|
74
|
+
});
|
|
75
|
+
it('should reject invalid mixed enum values', () => {
|
|
76
|
+
expect(() => new MixedEnum('2')).toThrow(src_1.ValueNotInEnumError);
|
|
77
|
+
expect(() => new MixedEnum(1)).toThrow(src_1.ValueNotInEnumError);
|
|
78
|
+
expect(() => new MixedEnum('invalid')).toThrow(src_1.ValueNotInEnumError);
|
|
79
|
+
});
|
|
80
|
+
it('should work with TypeScript enum values', () => {
|
|
81
|
+
expect(() => new Status(StatusEnum.ACTIVE)).not.toThrow();
|
|
82
|
+
expect(() => new Status('active')).not.toThrow();
|
|
83
|
+
expect(() => new Status('inactive')).not.toThrow();
|
|
84
|
+
expect(() => new Status('pending')).not.toThrow();
|
|
85
|
+
const status = new Status(StatusEnum.ACTIVE);
|
|
86
|
+
expect(status.valueOf()).toBe('active');
|
|
87
|
+
});
|
|
88
|
+
it('should reject invalid TypeScript enum values', () => {
|
|
89
|
+
expect(() => new Status('unknown')).toThrow(src_1.ValueNotInEnumError);
|
|
90
|
+
expect(() => new Status('ACTIVE')).toThrow(src_1.ValueNotInEnumError); // Case sensitive
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
describe('inheritance and behavior', () => {
|
|
94
|
+
it('should inherit from ', () => {
|
|
95
|
+
const enumValue = new StringEnum('A');
|
|
96
|
+
expect(enumValue).toBeInstanceOf(StringEnum);
|
|
97
|
+
expect(enumValue).toBeInstanceOf(src_1.Enum);
|
|
98
|
+
expect(enumValue.valueOf).toBeDefined();
|
|
99
|
+
expect(enumValue.isEqual).toBeDefined();
|
|
100
|
+
expect(enumValue.toString).toBeDefined();
|
|
101
|
+
});
|
|
102
|
+
it('should implement valueOf() method correctly', () => {
|
|
103
|
+
const stringEnum = new StringEnum('B');
|
|
104
|
+
const numberEnum = new NumberEnum(2);
|
|
105
|
+
expect(stringEnum.valueOf()).toBe('B');
|
|
106
|
+
expect(numberEnum.valueOf()).toBe(2);
|
|
107
|
+
});
|
|
108
|
+
it('should implement toString() method correctly from ', () => {
|
|
109
|
+
const stringEnum = new StringEnum('C');
|
|
110
|
+
const numberEnum = new NumberEnum(3);
|
|
111
|
+
expect(stringEnum.toString()).toBe('C');
|
|
112
|
+
expect(numberEnum.toString()).toBe('3');
|
|
113
|
+
});
|
|
114
|
+
it('should implement isEqual() method correctly', () => {
|
|
115
|
+
const enum1 = new StringEnum('A');
|
|
116
|
+
const enum2 = new StringEnum('A');
|
|
117
|
+
const enum3 = new StringEnum('B');
|
|
118
|
+
expect(enum1.isEqual(enum2)).toBeTrue();
|
|
119
|
+
expect(enum1.isEqual(enum3)).toBeFalse();
|
|
120
|
+
expect(enum1.isEqual('A')).toBeTrue();
|
|
121
|
+
expect(enum1.isEqual('B')).toBeFalse();
|
|
122
|
+
});
|
|
123
|
+
it('should compare with primitive values using isEqual', () => {
|
|
124
|
+
const stringEnum = new StringEnum('A');
|
|
125
|
+
const numberEnum = new NumberEnum(1);
|
|
126
|
+
expect(stringEnum.isEqual('A')).toBeTrue();
|
|
127
|
+
expect(stringEnum.isEqual('B')).toBeFalse();
|
|
128
|
+
expect(numberEnum.isEqual(1)).toBeTrue();
|
|
129
|
+
expect(numberEnum.isEqual(2)).toBeFalse();
|
|
130
|
+
});
|
|
131
|
+
it('should implement clone() method correctly', () => {
|
|
132
|
+
const original = new StringEnum('B');
|
|
133
|
+
const cloned = original.clone();
|
|
134
|
+
expect(cloned).toBeInstanceOf(StringEnum);
|
|
135
|
+
expect(cloned).toBeInstanceOf(src_1.Enum);
|
|
136
|
+
expect(cloned.valueOf()).toBe('B');
|
|
137
|
+
expect(cloned.toString()).toBe('B');
|
|
138
|
+
expect(cloned.isEqual(original)).toBeTrue();
|
|
139
|
+
expect(cloned).not.toBe(original); // Different instances
|
|
140
|
+
});
|
|
141
|
+
it('should maintain enum validation in cloned instances', () => {
|
|
142
|
+
const original = new NumberEnum(3);
|
|
143
|
+
const cloned = original.clone();
|
|
144
|
+
expect(cloned).toBeInstanceOf(NumberEnum);
|
|
145
|
+
expect(cloned.valueOf()).toBe(3);
|
|
146
|
+
// Cloned instance should still be a valid enum value
|
|
147
|
+
expect(() => cloned.toString()).not.toThrow();
|
|
148
|
+
expect(cloned.toString()).toBe('3');
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
describe('immutability', () => {
|
|
152
|
+
it('should have immutable value property inherited from ', () => {
|
|
153
|
+
const enumValue = new StringEnum('A');
|
|
154
|
+
// Verify immutability through value consistency
|
|
155
|
+
expect(enumValue.valueOf()).toBe('A');
|
|
156
|
+
expect(enumValue.value).toBe('A');
|
|
157
|
+
const originalValue = enumValue.valueOf();
|
|
158
|
+
expect(originalValue).toBe('A');
|
|
159
|
+
});
|
|
160
|
+
it('should return the same value after creation', () => {
|
|
161
|
+
const originalValue = 'B';
|
|
162
|
+
const enumValue = new StringEnum(originalValue);
|
|
163
|
+
expect(enumValue.valueOf()).toBe(originalValue);
|
|
164
|
+
expect(enumValue.toString()).toBe(originalValue);
|
|
165
|
+
// Value should remain the same
|
|
166
|
+
expect(enumValue.valueOf()).toBe(originalValue);
|
|
167
|
+
});
|
|
168
|
+
it('should create new instances instead of modifying existing ones', () => {
|
|
169
|
+
const value1 = 'A';
|
|
170
|
+
const value2 = 'C';
|
|
171
|
+
const enum1 = new StringEnum(value1);
|
|
172
|
+
const enum2 = new StringEnum(value2);
|
|
173
|
+
expect(enum1.valueOf()).toBe(value1);
|
|
174
|
+
expect(enum2.valueOf()).toBe(value2);
|
|
175
|
+
expect(enum1.valueOf()).not.toBe(enum2.valueOf());
|
|
176
|
+
});
|
|
177
|
+
it('should maintain immutability when cloning', () => {
|
|
178
|
+
const original = new NumberEnum(2);
|
|
179
|
+
const cloned = original.clone();
|
|
180
|
+
expect(original.valueOf()).toBe(2);
|
|
181
|
+
expect(cloned.valueOf()).toBe(2);
|
|
182
|
+
expect(original.isEqual(cloned)).toBeTrue();
|
|
183
|
+
expect(original).not.toBe(cloned);
|
|
184
|
+
// Both should remain immutable
|
|
185
|
+
expect(original.valueOf()).toBe(2);
|
|
186
|
+
expect(cloned.valueOf()).toBe(2);
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
describe('enum validation', () => {
|
|
190
|
+
it('should validate against the defined enum values', () => {
|
|
191
|
+
const stringEnum = new StringEnum('A');
|
|
192
|
+
expect(stringEnum.valueOf()).toBe('A');
|
|
193
|
+
// Should be one of ['A', 'B', 'C']
|
|
194
|
+
expect(['A', 'B', 'C']).toContain(stringEnum.valueOf());
|
|
195
|
+
});
|
|
196
|
+
it('should provide meaningful error messages for invalid values', () => {
|
|
197
|
+
expect(() => new StringEnum('D')).toThrow(/enum does not include value: D/);
|
|
198
|
+
expect(() => new NumberEnum(4)).toThrow(/enum does not include value: 4/);
|
|
199
|
+
});
|
|
200
|
+
it('should be case-sensitive for string enums', () => {
|
|
201
|
+
expect(() => new StringEnum('a')).toThrow(src_1.ValueNotInEnumError);
|
|
202
|
+
expect(() => new Status('ACTIVE')).toThrow(src_1.ValueNotInEnumError);
|
|
203
|
+
});
|
|
204
|
+
it('should handle type-sensitive validation for mixed enums', () => {
|
|
205
|
+
// '1' (string) is valid, but 1 (number) is not
|
|
206
|
+
expect(() => new MixedEnum('1')).not.toThrow();
|
|
207
|
+
expect(() => new MixedEnum(1)).toThrow(src_1.ValueNotInEnumError);
|
|
208
|
+
// 2 (number) is valid, but '2' (string) is not
|
|
209
|
+
expect(() => new MixedEnum(2)).not.toThrow();
|
|
210
|
+
expect(() => new MixedEnum('2')).toThrow(src_1.ValueNotInEnumError);
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
describe('static factory methods', () => {
|
|
214
|
+
it('should work with static factory methods for convenience', () => {
|
|
215
|
+
const activeStatus = Status.ACTIVE();
|
|
216
|
+
const inactiveStatus = Status.INACTIVE();
|
|
217
|
+
const pendingStatus = Status.PENDING();
|
|
218
|
+
expect(activeStatus.valueOf()).toBe('active');
|
|
219
|
+
expect(inactiveStatus.valueOf()).toBe('inactive');
|
|
220
|
+
expect(pendingStatus.valueOf()).toBe('pending');
|
|
221
|
+
expect(activeStatus).toBeInstanceOf(Status);
|
|
222
|
+
expect(inactiveStatus).toBeInstanceOf(Status);
|
|
223
|
+
expect(pendingStatus).toBeInstanceOf(Status);
|
|
224
|
+
});
|
|
225
|
+
it('should maintain equality with factory methods', () => {
|
|
226
|
+
const status1 = Status.ACTIVE();
|
|
227
|
+
const status2 = new Status('active');
|
|
228
|
+
expect(status1.isEqual(status2)).toBeTrue();
|
|
229
|
+
expect(status1.valueOf()).toBe(status2.valueOf());
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
//# sourceMappingURL=Enum.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Enum.spec.js","sourceRoot":"","sources":["../../../tests/value-objects/Enum.spec.ts"],"names":[],"mappings":";;AAAA,mCAAkE;AAElE,MAAM,UAAW,SAAQ,UAAI;IACpB,SAAS;QACd,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACzB,CAAC;CACF;AAED,MAAM,UAAW,SAAQ,UAAI;IACpB,SAAS;QACd,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnB,CAAC;CACF;AAED,MAAM,SAAU,SAAQ,UAAI;IACnB,SAAS;QACd,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAClB,CAAC;CACF;AAED,IAAK,UAIJ;AAJD,WAAK,UAAU;IACb,+BAAiB,CAAA;IACjB,mCAAqB,CAAA;IACrB,iCAAmB,CAAA;AACrB,CAAC,EAJI,UAAU,KAAV,UAAU,QAId;AAED,MAAM,MAAO,SAAQ,UAAI;IAChB,SAAS;QACd,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAED,yCAAyC;IACzC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;;AAGxD,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,CACJ,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,SAA8B,CAAC,CACrD,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,CACJ,gBAAU,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,SAA8B,CAAC,CAAC,CACxE,CAAC,QAAQ,EAAE,CAAC;YACb,MAAM,CACJ,gBAAU,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,IAAyB,CAAC,CAAC,CACnE,CAAC,QAAQ,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAChD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAChD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAEhD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAE9C,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC/C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAE7C,MAAM,WAAW,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,WAAW,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAmB,CAAC,CAAC;YAC/D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAmB,CAAC,CAAC;YAC/D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAmB,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAmB,CAAC,CAAC;YAC7D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAmB,CAAC,CAAC;YAC7D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAmB,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAmB,CAAC,CAAC;YAC9D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAmB,CAAC,CAAC;YAC5D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAmB,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC1D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACjD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACnD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAElD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAmB,CAAC,CAAC;YACjE,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAmB,CAAC,CAAC,CAAC,iBAAiB;QACpF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,UAAI,CAAC,CAAC;YACvC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YAErC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YAErC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;YAElC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YAErC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC3C,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC5C,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,MAAM,GAAI,QAAgB,CAAC,KAAK,EAAE,CAAC;YAEzC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,UAAI,CAAC,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,sBAAsB;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,MAAM,GAAI,QAAgB,CAAC,KAAK,EAAE,CAAC;YAEzC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEjC,qDAAqD;YACrD,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;YAEtC,gDAAgD;YAChD,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,CAAE,SAAiB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAE3C,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;YAC1C,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,aAAa,GAAG,GAAG,CAAC;YAC1B,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC;YAEhD,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAChD,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAEjD,+BAA+B;YAC/B,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YACxE,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,MAAM,GAAG,GAAG,CAAC;YAEnB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YAErC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,MAAM,GAAI,QAAgB,CAAC,KAAK,EAAE,CAAC;YAEzC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAElC,+BAA+B;YAC/B,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEvC,mCAAmC;YACnC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;YACrE,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CACvC,gCAAgC,CACjC,CAAC;YACF,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAmB,CAAC,CAAC;YAC/D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAmB,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,+CAA+C;YAC/C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC/C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAmB,CAAC,CAAC;YAE5D,+CAA+C;YAC/C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAmB,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YAEvC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAClD,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;YAErC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Integer.spec.d.ts","sourceRoot":"","sources":["../../../tests/value-objects/Integer.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const src_1 = require("../../src");
|
|
4
|
+
describe('Integer', () => {
|
|
5
|
+
it('should create an Integer for a valid integer', () => {
|
|
6
|
+
const value = 42;
|
|
7
|
+
const integer = new src_1.Integer(value);
|
|
8
|
+
expect(integer).toMatchObject({ value });
|
|
9
|
+
});
|
|
10
|
+
it('should throw InvalidIntegerError for a non-integer value', () => {
|
|
11
|
+
const value = 42.5;
|
|
12
|
+
expect(() => new src_1.Integer(value)).toThrow(src_1.InvalidIntegerError);
|
|
13
|
+
expect(() => new src_1.Integer(value)).toThrow(`Invalid integer value ${value}`);
|
|
14
|
+
});
|
|
15
|
+
it('should throw InvalidNumberError for NaN', () => {
|
|
16
|
+
const value = NaN;
|
|
17
|
+
expect(() => new src_1.Integer(value)).toThrow(src_1.InvalidNumberError);
|
|
18
|
+
expect(() => new src_1.Integer(value)).toThrow(`Invalid number ${value}`);
|
|
19
|
+
});
|
|
20
|
+
it('should throw InvalidIntegerError for Infinity', () => {
|
|
21
|
+
const value = Infinity;
|
|
22
|
+
expect(() => new src_1.Integer(value)).toThrow(src_1.InvalidIntegerError);
|
|
23
|
+
expect(() => new src_1.Integer(value)).toThrow(`Invalid integer value ${value}`);
|
|
24
|
+
});
|
|
25
|
+
it('should throw InvalidIntegerError for -Infinity', () => {
|
|
26
|
+
const value = -Infinity;
|
|
27
|
+
expect(() => new src_1.Integer(value)).toThrow(src_1.InvalidIntegerError);
|
|
28
|
+
expect(() => new src_1.Integer(value)).toThrow(`Invalid integer value ${value}`);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=Integer.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Integer.spec.js","sourceRoot":"","sources":["../../../tests/value-objects/Integer.spec.ts"],"names":[],"mappings":";;AAAA,mCAA6E;AAE7E,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,IAAI,aAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC;QAEnB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,aAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAmB,CAAC,CAAC;QAC9D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,aAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,KAAK,GAAG,GAAG,CAAC;QAElB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,aAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAkB,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,aAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,KAAK,GAAG,QAAQ,CAAC;QAEvB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,aAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAmB,CAAC,CAAC;QAC9D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,aAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC;QAExB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,aAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAmB,CAAC,CAAC;QAC9D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,aAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NullObject.spec.d.ts","sourceRoot":"","sources":["../../../tests/value-objects/NullObject.spec.ts"],"names":[],"mappings":""}
|