UNPKG

rdf-validation

Version:
344 lines (303 loc) 15.5 kB
import { describe } from 'mocha' import XsdValidation from '../../lib/term/XsdValidation.js' import generate from '../support/generate.js' import * as ns from '../support/namespaces.js' import runTestCases from '../support/runTestCases.js' describe('XsdValidation', () => { const testCases = [ ['', ns.xsd.anySimpleType, true], ['test', ns.xsd.anySimpleType, true], ['\uffff', ns.xsd.anySimpleType, true], ['', ns.xsd.anyAtomicType, true], ['test', ns.xsd.anyAtomicType, true], ['\uffff', ns.xsd.anyAtomicType, true], ['', ns.xsd.string, true], ['test', ns.xsd.string, true], ['\u000d', ns.xsd.string, true], ['\u000a', ns.xsd.string, true], ['\u0009', ns.xsd.string, true], ['\ud8ff', ns.xsd.string, false], ['\udfff', ns.xsd.string, false], ['\ufffe', ns.xsd.string, false], ['\uffff', ns.xsd.string, false], ['', ns.xsd.boolean, false], ['test', ns.xsd.boolean, false], ['1', ns.xsd.boolean, true], ['true', ns.xsd.boolean, true], ['0', ns.xsd.boolean, true], ['false', ns.xsd.boolean, true], ['10', ns.xsd.boolean, false], ['1true', ns.xsd.boolean, false], ['01', ns.xsd.boolean, false], ['false0', ns.xsd.boolean, false], ['', ns.xsd.decimal, false], ['test', ns.xsd.decimal, false], [generate(['', '+', '-'], ['', '00'], ['0', '123456789012345678901234567890'], ['', '.'], ['', '00']), ns.xsd.decimal, true], [generate(['', '+', '-'], ['', '00'], ['', '.'], ['987654321098765432109876543210'], ['', '00']), ns.xsd.decimal, true], [generate(['', '+', '-'], ['', '00'], ['0', '123456789012345678901234567890'], ['', '.'], ['987654321098765432109876543210'], ['', '00']), ns.xsd.decimal, true], ['NaN', ns.xsd.decimal, false], ['1,2', ns.xsd.decimal, false], ['1.2.3', ns.xsd.decimal, false], ['', ns.xsd.float, false], ['test', ns.xsd.float, false], [generate(['', '+', '-'], ['', '00'], ['0', '123'], ['', '.'], ['', '00'], ['', 'e2', 'e+2', 'e-2', 'E2', 'E+2', 'E-2']), ns.xsd.float, true], [generate(['', '+', '-'], ['', '00'], ['', '.'], ['987'], ['', '00'], ['', 'e2', 'e+2', 'e-2', 'E2', 'E+2', 'E-2']), ns.xsd.float, true], [generate(['', '+', '-'], ['', '00'], ['0', '123'], ['', '.'], ['987'], ['', '00'], ['', 'e2', 'e+2', 'e-2', 'E2', 'E+2', 'E-2']), ns.xsd.float, true], ['INF', ns.xsd.float, true], ['-INF', ns.xsd.float, true], ['NaN', ns.xsd.float, true], ['1e2.3', ns.xsd.float, false], ['', ns.xsd.double, false], ['test', ns.xsd.double, false], [generate(['', '+', '-'], ['', '00'], ['0', '123'], ['', '.'], ['', '00'], ['', 'e2', 'e+2', 'e-2', 'E2', 'E+2', 'E-2']), ns.xsd.double, true], [generate(['', '+', '-'], ['', '00'], ['', '.'], ['987'], ['', '00'], ['', 'e2', 'e+2', 'e-2', 'E2', 'E+2', 'E-2']), ns.xsd.double, true], [generate(['', '+', '-'], ['', '00'], ['0', '123'], ['', '.'], ['987'], ['', '00'], ['', 'e2', 'e+2', 'e-2', 'E2', 'E+2', 'E-2']), ns.xsd.double, true], ['INF', ns.xsd.double, true], ['-INF', ns.xsd.double, true], ['NaN', ns.xsd.double, true], ['1e2.3', ns.xsd.double, false], ['', ns.xsd.duration, false], ['test', ns.xsd.duration, false], [generate(['P', '-P'], ['12Y'], ['', '12M'], ['', '12D']), ns.xsd.duration, true], [generate(['P', '-P'], ['12M'], ['', '12D']), ns.xsd.duration, true], [generate(['P', '-P'], ['', '12Y'], ['T'], ['12H'], ['', '12M'], ['', '12S', '12.34S']), ns.xsd.duration, true], [generate(['P', '-P'], ['', '12Y'], ['T'], ['12M'], ['', '12S', '12.34S']), ns.xsd.duration, true], [generate(['P', '-P'], ['', '12Y'], ['T'], ['12S', '12.34S']), ns.xsd.duration, true], ['P', ns.xsd.duration, false], ['P-12Y', ns.xsd.duration, false], ['', ns.xsd.dateTime, false], ['test', ns.xsd.dateTime, false], [generate(['', '-'], ['0000', '2000', '20000'], ['-'], ['01', '12'], ['-'], ['01', '12'], ['T'], ['00', '12'], [':'], ['00', '12'], [':'], ['00', '12'], ['', '.000', '.123'], ['', 'Z', '+12:34', '-12:34']), ns.xsd.dateTime, true], ['123-01-01T00:00:00', ns.xsd.dateTime, false], ['0000-01-01T00:00:00abc', ns.xsd.dateTime, false], ['0000-01-01T00:00:00+123:00', ns.xsd.dateTime, false], ['', ns.xsd.time, false], ['test', ns.xsd.time, false], [generate(['00', '12'], [':'], ['00', '12'], [':'], ['00', '12'], ['', '.000', '.123'], ['', 'Z', '+12:34', '-12:34']), ns.xsd.time, true], ['0000-00-00T0:00:00', ns.xsd.time, false], ['0000-00-00', ns.xsd.time, false], ['0:00:00', ns.xsd.time, false], ['00:00:00abc', ns.xsd.time, false], ['00:00:00+123:00', ns.xsd.time, false], ['', ns.xsd.date, false], ['test', ns.xsd.date, false], [generate(['', '-'], ['0000', '2000', '20000'], ['-'], ['01', '12'], ['-'], ['01', '12'], ['', 'Z', '+12:34', '-12:34']), ns.xsd.date, true], ['0000-00-00T0:00:00', ns.xsd.date, false], ['00:00:00', ns.xsd.date, false], ['00-00-00', ns.xsd.date, false], ['0000-00-00abc', ns.xsd.date, false], ['0000-00-00+123:00', ns.xsd.date, false], ['', ns.xsd.gYearMonth, false], ['test', ns.xsd.gYearMonth, false], [generate(['', '-'], ['0000', '2000', '20000'], ['-'], ['01', '12'], ['', 'Z', '+12:34', '-12:34']), ns.xsd.gYearMonth, true], ['0000-00-00T0:00:00', ns.xsd.gYearMonth, false], ['0000-00-00', ns.xsd.gYearMonth, false], ['00:00:00', ns.xsd.gYearMonth, false], ['0000-00abc', ns.xsd.gYearMonth, false], ['0000-00+123:00', ns.xsd.gYearMonth, false], ['', ns.xsd.gYear, false], ['test', ns.xsd.gYear, false], [generate(['', '-'], ['0000', '2000', '20000'], ['', 'Z', '+12:34', '-12:34']), ns.xsd.gYear, true], ['0000-00-00T0:00:00', ns.xsd.gYear, false], ['0000-00-00', ns.xsd.gYear, false], ['0000-00', ns.xsd.gYear, false], ['00:00:00', ns.xsd.gYear, false], ['0000-00abc', ns.xsd.gYear, false], ['0000-00+123:00', ns.xsd.gYear, false], ['', ns.xsd.gMonthDay, false], ['test', ns.xsd.gMonthDay, false], [generate(['--'], ['01', '12'], ['-'], ['01', '12'], ['', 'Z', '+12:34', '-12:34']), ns.xsd.gMonthDay, true], ['0000-00-00T0:00:00', ns.xsd.gMonthDay, false], ['--0000-00-00T0:00:00', ns.xsd.gMonthDay, false], ['00:00:00', ns.xsd.gMonthDay, false], ['--00:00:00', ns.xsd.gMonthDay, false], ['00-00-00', ns.xsd.gMonthDay, false], ['--00-00-00', ns.xsd.gMonthDay, false], ['--00-00abc', ns.xsd.gMonthDay, false], ['--0000-00+123:00', ns.xsd.gMonthDay, false], ['---00-00', ns.xsd.gMonthDay, false], ['', ns.xsd.gDay, false], [generate(['---'], ['01', '12'], ['', 'Z', '+12:34', '-12:34']), ns.xsd.gDay, true], ['0000-00-00T0:00:00', ns.xsd.gDay, false], ['---0000-00-00T0:00:00', ns.xsd.gDay, false], ['00:00:00', ns.xsd.gDay, false], ['---00:00:00', ns.xsd.gDay, false], ['00-00-00', ns.xsd.gDay, false], ['---00-00-00', ns.xsd.gDay, false], ['---00-00abc', ns.xsd.gDay, false], ['---0000-00+123:00', ns.xsd.gDay, false], ['--00', ns.xsd.gDay, false], ['', ns.xsd.gMonth, false], ['test', ns.xsd.gMonth, false], [generate(['--'], ['01', '12'], ['', 'Z', '+12:34', '-12:34']), ns.xsd.gMonth, true], ['0000-00-00T0:00:00', ns.xsd.gMonth, false], ['--0000-00-00T0:00:00', ns.xsd.gMonth, false], ['00:00:00', ns.xsd.gMonth, false], ['--00:00:00', ns.xsd.gMonth, false], ['00-00-00', ns.xsd.gMonth, false], ['--00-00-00', ns.xsd.gMonth, false], ['--00abc', ns.xsd.gMonth, false], ['--0000+123:00', ns.xsd.gMonth, false], ['---00-00', ns.xsd.gMonth, false], ['', ns.xsd.hexBinary, true], ['test', ns.xsd.hexBinary, false], [generate(['0', '1', 'a', 'A', 'f', 'F'], ['0', '1', 'a', 'A', 'f', 'F']), ns.xsd.hexBinary, true], [' ab', ns.xsd.hexBinary, false], ['ab ', ns.xsd.hexBinary, false], ['', ns.xsd.base64Binary, true], ['test', ns.xsd.base64Binary, true], [generate(['0aB+', '1cDe'], ['', ' '], ['9zY/', 'AA==']), ns.xsd.base64Binary, true], [generate(['0aB'], ['.', ':', '#', '@', '"', '\'']), ns.xsd.base64Binary, false], ['', ns.xsd.anyURI, true], ['test', ns.xsd.anyURI, true], ['\u000d', ns.xsd.anyURI, true], ['\u000a', ns.xsd.anyURI, true], ['\u0009', ns.xsd.anyURI, true], ['\ud8ff', ns.xsd.anyURI, false], ['\udfff', ns.xsd.anyURI, false], ['\ufffe', ns.xsd.anyURI, false], ['\uffff', ns.xsd.anyURI, false], ['', ns.xsd.normalizedString, true], ['test', ns.xsd.normalizedString, true], [' ab', ns.xsd.normalizedString, true], ['ab ', ns.xsd.normalizedString, true], ['\u000d', ns.xsd.normalizedString, false], ['\u000a', ns.xsd.normalizedString, false], ['\u0009', ns.xsd.normalizedString, false], ['\ud8ff', ns.xsd.normalizedString, false], ['\udfff', ns.xsd.normalizedString, false], ['\ufffe', ns.xsd.normalizedString, false], ['\uffff', ns.xsd.normalizedString, false], ['', ns.xsd.token, true], ['test', ns.xsd.token, true], [' ab', ns.xsd.token, false], ['ab ', ns.xsd.token, false], ['\u000d', ns.xsd.token, false], ['\u000a', ns.xsd.token, false], ['\u0009', ns.xsd.token, false], ['\ud8ff', ns.xsd.token, false], ['\udfff', ns.xsd.token, false], ['\ufffe', ns.xsd.token, false], ['\uffff', ns.xsd.token, false], ['', ns.xsd.language, false], ['test', ns.xsd.language, true], ['', ns.xsd.integer, false], ['test', ns.xsd.integer, false], [generate(['', '+', '-'], ['', '0'], ['0', '123456789012345678901234567890']), ns.xsd.integer, true], ['abc', ns.xsd.integer, false], ['', ns.xsd.nonPositiveInteger, false], ['test', ns.xsd.nonPositiveInteger, false], [generate(['-'], ['', '0'], ['0', '1', '123456789012345678901234567890']), ns.xsd.nonPositiveInteger, true], ['abc', ns.xsd.nonPositiveInteger, false], ['', ns.xsd.negativeInteger, false], ['test', ns.xsd.negativeInteger, false], [generate(['-'], ['', '0'], ['1', '123456789012345678901234567890']), ns.xsd.negativeInteger, true], ['0', ns.xsd.negativeInteger, false], ['abc', ns.xsd.negativeInteger, false], ['', ns.xsd.long, false], ['test', ns.xsd.long, false], [generate(['', '+', '-'], ['', '0'], ['0', '1', '1234567890123456789']), ns.xsd.long, true], ['9223372036854775807', ns.xsd.long, true], ['-9223372036854775808', ns.xsd.long, true], ['9223372036854775808', ns.xsd.long, false], ['-9223372036854775809', ns.xsd.long, false], ['abc', ns.xsd.long, false], ['', ns.xsd.int, false], ['test', ns.xsd.int, false], [generate(['', '+', '-'], ['', '0'], ['0', '1', '1234567890']), ns.xsd.int, true], ['2147483647', ns.xsd.int, true], ['-2147483648', ns.xsd.int, true], ['2147483648', ns.xsd.int, false], ['-2147483649', ns.xsd.int, false], ['abc', ns.xsd.int, false], ['', ns.xsd.short, false], ['test', ns.xsd.short, false], [generate(['', '+', '-'], ['', '0'], ['0', '1', '12345']), ns.xsd.short, true], ['32767', ns.xsd.short, true], ['-32768', ns.xsd.short, true], ['32768', ns.xsd.short, false], ['-32769', ns.xsd.short, false], ['abc', ns.xsd.short, false], ['', ns.xsd.byte, false], ['test', ns.xsd.byte, false], [generate(['', '+', '-'], ['', '0'], ['0', '1', '123']), ns.xsd.byte, true], ['127', ns.xsd.byte, true], ['-128', ns.xsd.byte, true], ['128', ns.xsd.byte, false], ['-129', ns.xsd.byte, false], ['abc', ns.xsd.byte, false], ['', ns.xsd.nonNegativeInteger, false], ['test', ns.xsd.nonNegativeInteger, false], [generate(['', '+'], ['', '0'], ['0', '1', '123456789012345678901234567890']), ns.xsd.nonNegativeInteger, true], ['abc', ns.xsd.nonNegativeInteger, false], ['', ns.xsd.unsignedLong, false], ['test', ns.xsd.unsignedLong, false], [generate(['', '+'], ['', '0'], ['0', '1', '1234567890123456789']), ns.xsd.unsignedLong, true], ['abc', ns.xsd.unsignedLong, false], ['18446744073709551615', ns.xsd.unsignedLong, true], ['0', ns.xsd.unsignedLong, true], ['18446744073709551616', ns.xsd.unsignedLong, false], ['-1', ns.xsd.unsignedLong, false], ['abc', ns.xsd.unsignedLong, false], ['', ns.xsd.unsignedInt, false], ['test', ns.xsd.unsignedInt, false], [generate(['', '+'], ['', '0'], ['0', '1', '1234567890']), ns.xsd.unsignedInt, true], ['abc', ns.xsd.unsignedInt, false], ['4294967295', ns.xsd.unsignedInt, true], ['0', ns.xsd.unsignedInt, true], ['4294967296', ns.xsd.unsignedInt, false], ['-1', ns.xsd.unsignedInt, false], ['abc', ns.xsd.unsignedInt, false], ['', ns.xsd.unsignedShort, false], ['test', ns.xsd.unsignedShort, false], [generate(['', '+'], ['', '0'], ['0', '1', '12345']), ns.xsd.unsignedShort, true], ['abc', ns.xsd.unsignedShort, false], ['65535', ns.xsd.unsignedShort, true], ['0', ns.xsd.unsignedShort, true], ['65536', ns.xsd.unsignedShort, false], ['-1', ns.xsd.unsignedShort, false], ['abc', ns.xsd.unsignedShort, false], ['', ns.xsd.unsignedByte, false], ['test', ns.xsd.unsignedByte, false], [generate(['', '+'], ['', '0'], ['0', '1', '123']), ns.xsd.unsignedByte, true], ['abc', ns.xsd.unsignedByte, false], ['255', ns.xsd.unsignedByte, true], ['0', ns.xsd.unsignedByte, true], ['256', ns.xsd.unsignedByte, false], ['-1', ns.xsd.unsignedByte, false], ['abc', ns.xsd.unsignedByte, false], ['', ns.xsd.positiveInteger, false], ['test', ns.xsd.positiveInteger, false], [generate(['', '+'], ['', '0'], ['1', '123456789012345678901234567890']), ns.xsd.positiveInteger, true], ['0', ns.xsd.positiveInteger, false], ['abc', ns.xsd.positiveInteger, false], ['', ns.xsd.yearMonthDuration, false], ['test', ns.xsd.yearMonthDuration, false], [generate(['P', '-P'], ['12Y'], ['', '12M']), ns.xsd.yearMonthDuration, true], ['P12Y12M12D', ns.xsd.yearMonthDuration, false], ['PT12D', ns.xsd.yearMonthDuration, false], ['PT12M', ns.xsd.yearMonthDuration, false], ['PT12S', ns.xsd.yearMonthDuration, false], ['P', ns.xsd.yearMonthDuration, false], ['P-12Y', ns.xsd.yearMonthDuration, false], ['', ns.xsd.dayTimeDuration, false], ['test', ns.xsd.dayTimeDuration, false], [generate(['P', '-P'], ['', '12D'], ['T'], ['12H'], ['', '12M'], ['', '12S', '12.34S']), ns.xsd.dayTimeDuration, true], [generate(['P', '-P'], ['', '12D'], ['T'], ['12M'], ['', '12S', '12.34S']), ns.xsd.dayTimeDuration, true], [generate(['P', '-P'], ['', '12D'], ['T'], ['12S', '12.34S']), ns.xsd.dayTimeDuration, true], ['P12Y', ns.xsd.dayTimeDuration, false], ['P12M', ns.xsd.dayTimeDuration, false], ['P12Y12D', ns.xsd.dayTimeDuration, false], ['P12M12D', ns.xsd.dayTimeDuration, false], ['P', ns.xsd.dayTimeDuration, false], ['P-12D', ns.xsd.dayTimeDuration, false], ['', ns.xsd.dateTimeStamp, false], ['test', ns.xsd.dateTimeStamp, false], [generate(['', '-'], ['0000', '2000', '20000'], ['-'], ['01', '12'], ['-'], ['01', '12'], ['T'], ['00', '12'], [':'], ['00', '12'], [':'], ['00', '12'], ['', '.000', '.123'], ['Z', '+12:34', '-12:34']), ns.xsd.dateTimeStamp, true], ['0000-01-01T00:00:00', ns.xsd.dateTimeStamp, false], ['0000-01-01T00:00:00+123:00', ns.xsd.dateTimeStamp, false], ['123-01-01T00:00:00Z', ns.xsd.dateTimeStamp, false] ] const validation = new XsdValidation() runTestCases({ testCases, validation }) })