Constant EXHAUSTIVE_BIF_RANGE

Source
pub const EXHAUSTIVE_BIF_RANGE: &str = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<definitions xmlns=\"https://www.omg.org/spec/DMN/20230324/MODEL/\"\n             namespace=\"https://decision-toolkit.org/spec/DMN/built-in-functions\"\n             name=\"range-function\"\n             id=\"_0091f826-b871-4747-9c87-5dfa0091b316\">\n\n    <description>\n        FEEL built-in function `range(string)`.\n\n        Supported range types:\n        - number\n        - string\n        - date\n        - time\n        - date and time\n        - years and months duration\n        - days and time duration\n    </description>\n\n    <inputData name=\"input_001\" id=\"_input_001\">\n        <variable name=\"input_001\" typeRef=\"string\"/>\n    </inputData>\n\n    <decision name=\"decision_0001\">\n        <description>\n            Basic sanity check to ensure that the `range` function returns a **number** range.\n        </description>\n        <variable name=\"decision_0001\"/>\n        <literalExpression>\n            <text>\n                [\n                range(\"[1..3]\"),\n                range(\"[1..3)\"),\n                range(\"(1..3]\"),\n                range(\"(1..3)\"),\n                range(\"[1..3[\"),\n                range(\"]1..3]\"),\n                range(\"]1..3[\"),\n                range(\"[1..)\"),\n                range(\"(..3]\")\n                ]\n            </text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision_0002\">\n        <description>\n            Basic sanity check to ensure that the `range` function returns a **string** range.\n        </description>\n        <variable name=\"decision_0001\"/>\n        <literalExpression>\n            <text>\n                [\n                range(\"[\\\"a\\\"..\\\"c\\\"]\")\n                ]\n            </text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision_0100\">\n        <description>\n            Basic sanity check to ensure that the `range` function operates like a **number** range.\n        </description>\n        <variable name=\"decision_0100\"/>\n        <literalExpression>\n            <text>\n                [\n                every x in [\n                1 in range(\"[1..3]\"),\n                2 in range(\"[1..3]\"),\n                3 in range(\"[1..3]\"),\n                2 in range(\"(1..3]\"),\n                2 in range(\"[1..3)\"),\n                2 in range(\"]1..3]\"),\n                2 in range(\"[1..3[\")\n                ] satisfies x = true,\n                every x in [\n                1 in range(\"(1..3]\"),\n                3 in range(\"[1..3)\"),\n                1 in range(\"]1..3]\"),\n                3 in range(\"[1..3[\")\n                ] satisfies x = false\n                ]\n            </text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision001\" id=\"_decision001\">\n        <!-- basic sanity check to ensure it is operating as a range -->\n        <variable name=\"decision001\"/>\n        <literalExpression>\n            <text>2 in range(\"[1..3]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision001_a\" id=\"_decision001_a\">\n        <!-- will parse and have the correct type for number -->\n        <variable name=\"decision001_a\"/>\n        <literalExpression>\n            <text>range(\"[1..3]\") instance of range&lt;number&gt;</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision001_b\" id=\"_decision001_b\">\n        <!-- will parse and have the correct type for number (using non-literal) -->\n        <variable name=\"decision001_b\"/>\n        <literalExpression>\n            <text>range(string(\"[1..3]\")) instance of range&lt;number&gt;</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision001_c\" id=\"_decision001_c\">\n        <!-- will parse and have the correct type for string -->\n        <variable name=\"decision001_c\"/>\n        <literalExpression>\n            <text>range(\"[\\\"a\\\"..\\\"c\\\"]\") instance of range&lt;string&gt;</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision001_d\" id=\"_decision001_d\">\n        <!-- will parse and have the correct type for date -->\n        <variable name=\"decision001_d\"/>\n        <literalExpression>\n            <text>range(\"[@\\\"1970-01-01\\\"..@\\\"1970-01-02\\\"]\") instance of range&lt;date&gt;</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision001_e\" id=\"_decision001_e\">\n        <!-- will parse and have the correct type for date and time -->\n        <variable name=\"decision001_e\"/>\n        <literalExpression>\n            <text>range(\"[@\\\"1970-01-01T00:00:00\\\"..@\\\"1970-01-02T00:00:00\\\"]\") instance of range&lt;date and time&gt;\n            </text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision001_g\" id=\"_decision001_g\">\n        <!-- will parse and have the correct type for time -->\n        <variable name=\"decision001_g\"/>\n        <literalExpression>\n            <text>range(\"[@\\\"00:00:00\\\"..@\\\"00:00:00\\\"]\") instance of range&lt;time&gt;</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision001_h\" id=\"_decision001_h\">\n        <!-- will parse and have the correct type for days and time duration -->\n        <variable name=\"decision001_h\"/>\n        <literalExpression>\n            <text>range(\"[@\\\"P1D\\\"..@\\\"P2D\\\"]\") instance of range&lt;days and time duration&gt;</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision001_i\" id=\"_decision001_i\">\n        <!-- will parse and have the correct type for years and months duration -->\n        <variable name=\"decision001_i\"/>\n        <literalExpression>\n            <text>range(\"[@\\\"P1Y\\\"..@\\\"P2Y\\\"]\") instance of range&lt;years and months duration&gt;</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision002\" id=\"_decision002\">\n        <!-- basic sanity check to ensure it is operating as a range using non-literal-->\n        <variable name=\"decision002\"/>\n        <literalExpression>\n            <text>2 in range(string(\"[1..3]\"))</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision003_a\" id=\"_decision003_a\">\n        <!-- parsed range is equal to literal range -->\n        <variable name=\"decision003_a\"/>\n        <literalExpression>\n            <text>range(\"[18..21]\") = [18..21]</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision003_b\" id=\"_decision003_b\">\n        <!-- parsed range endpoint inclusivity is equal to literal range -->\n        <variable name=\"decision003_b\"/>\n        <literalExpression>\n            <text>range(\"(18..21]\") = (18..21]</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision003_c\" id=\"_decision003_c\">\n        <!-- parsed range endpoint inclusivity is equal to literal range -->\n        <variable name=\"decision003_c\"/>\n        <literalExpression>\n            <text>range(\"]18..21]\") = ]18..21]</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision003_d\" id=\"_decision003_d\">\n        <!-- parsed range endpoint inclusivity is equal to literal range -->\n        <variable name=\"decision003_d\"/>\n        <literalExpression>\n            <text>range(\"[18..21)\") = [18..21)</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision003_e\" id=\"_decision003_e\">\n        <!-- parsed range endpoint inclusivity is equal to literal range -->\n        <variable name=\"decision003_e\"/>\n        <literalExpression>\n            <text>range(\"[18..21[\") = [18..21[</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision004_e\" id=\"_decision004_e\">\n        <!-- closed start endpoint with no value is not valid and gives null -->\n        <variable name=\"decision004_e\"/>\n        <literalExpression>\n            <text>range(\"[..2]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision004_f\" id=\"_decision004_f\">\n        <!-- closed end endpoint with no value is not valid and gives null -->\n        <variable name=\"decision004_f\"/>\n        <literalExpression>\n            <text>range(\"[1..]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision005_a\" id=\"_decision005_a\">\n        <!-- parsed string range is equal to literal range -->\n        <variable name=\"decision005_a\"/>\n        <literalExpression>\n            <text>range(\"[\\\"a\\\"..\\\"c\\\"]\") = [\"a\"..\"c\"]</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision005_b\" id=\"_decision005_b\">\n        <!-- parsed date range is equal to literal range -->\n        <variable name=\"decision005_b\"/>\n        <literalExpression>\n            <text>range(\"[@\\\"1970-01-01\\\"..@\\\"1970-01-02\\\"]\") = [@\"1970-01-01\"..@\"1970-01-02\"]</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision005_c\" id=\"_decision005_c\">\n        <!-- parsed date and time range is equal to literal range -->\n        <variable name=\"decision005_c\"/>\n        <literalExpression>\n            <text>range(\"[@\\\"1970-01-01T00:00:00\\\"..@\\\"1970-01-02T00:00:00\\\"]\") =\n                [@\"1970-01-01T00:00:00\"..@\"1970-01-02T00:00:00\"]\n            </text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision005_d\" id=\"_decision005_d\">\n        <!-- parsed time range is equal to literal range -->\n        <variable name=\"decision005_d\"/>\n        <literalExpression>\n            <text>range(\"[@\\\"00:00:00\\\"..@\\\"00:00:00\\\"]\") = [@\"00:00:00\"..@\"00:00:00\"]</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision005_e\" id=\"_decision005_e\">\n        <!-- parsed days/weeks duration range is equal to literal range -->\n        <variable name=\"decision005_e\"/>\n        <literalExpression>\n            <text>range(\"[@\\\"P1D\\\"..@\\\"P2D\\\"]\") = [@\"P1D\"..@\"P2D\"]</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision005_f\" id=\"_decision005_f\">\n        <!-- parsed years/month duration range is equal to literal range -->\n        <variable name=\"decision005_f\"/>\n        <literalExpression>\n            <text>range(\"[@\\\"P1Y\\\"..@\\\"P2Y\\\"]\") = [@\"P1Y\"..@\"P2Y\"]</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision006\" id=\"_decision006\">\n        <!-- will ignore whitespace when parsing -->\n        <variable name=\"decision006\"/>\n        <literalExpression>\n            <text>range(\" [ 1 .. 3 ] \") = [1..3]</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision007_a\" id=\"_decision007_a\">\n        <!-- use of date() function literal is permitted -->\n        <variable name=\"decision007_a\"/>\n        <literalExpression>\n            <text>range(\"[date(\\\"1970-01-01\\\")..date(\\\"1970-01-02\\\")]\") = [date(\"1970-01-01\")..date(\"1970-01-02\")]\n            </text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision007_b\" id=\"_decision007_b\">\n        <!-- use of date() function as non literal is not permitted and gives null -->\n        <!-- the usage of string() here causes start endPoint to be non-literal -->\n        <variable name=\"decision007_b\"/>\n        <literalExpression>\n            <text>range(\"[date(string(\\\"1970-01-01\\\"))..date(\\\"1970-01-02\\\")]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision007_c\" id=\"_decision007_c\">\n        <!-- use of date() function as non literal is not permitted and gives null -->\n        <!-- shows range literal using input data as argument to date() -->\n        <variable name=\"decision007_c\"/>\n        <informationRequirement>\n            <requiredInput href=\"#_input_001\"/>\n        </informationRequirement>\n        <literalExpression>\n            <text>range(\"[date(input_001)..date(\\\"1970-01-02\\\")]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision008_a\" id=\"_decision008_a\">\n        <!-- use of date and time() function literal is permitted -->\n        <variable name=\"decision008_a\"/>\n        <literalExpression>\n            <text>range(\"[date and time(\\\"1970-01-01T00:00:00\\\")..@\\\"1970-01-02T00:00:00\\\"]\") =\n                [@\"1970-01-01T00:00:00\"..@\"1970-01-02T00:00:00\"]\n            </text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision008_b\" id=\"_decision008_b\">\n        <!-- use of date and time() function as non literal is not permitted and gives null -->\n        <!-- the usage of string() here causes start endPoint to be non-literal -->\n        <variable name=\"decision008_b\"/>\n        <literalExpression>\n            <text>range(\"[date and time(string(\\\"1970-01-01T00:00:00\\\"))..@\\\"1970-01-02T00:00:00\\\"]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision008_c\" id=\"_decision008_c\">\n        <!-- use of date and time() function as non literal is not permitted and gives null -->\n        <!-- shows range literal using input data as argument to date and time() -->\n        <variable name=\"decision008_c\"/>\n        <informationRequirement>\n            <requiredInput href=\"#_input_001\"/>\n        </informationRequirement>\n        <literalExpression>\n            <text>range(\"[date and time(input_001)..@\\\"1970-01-02T00:00:00\\\"]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision009_a\" id=\"_decision009_a\">\n        <!-- use of time() function literal is permitted -->\n        <variable name=\"decision009_a\"/>\n        <literalExpression>\n            <text>range(\"[time(\\\"00:00:00\\\")..@\\\"00:00:00\\\"]\") = [@\"00:00:00\"..@\"00:00:00\"]</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision009_b\" id=\"_decision009_b\">\n        <!-- use of time() function as non literal is not permitted and gives null -->\n        <!-- the usage of string() here causes start endPoint to be non-literal -->\n        <variable name=\"decision009_b\"/>\n        <literalExpression>\n            <text>range(\"[time(string(\\\"00:00:00\\\"))..@\\\"00:00:00\\\"]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision009_c\" id=\"_decision009_c\">\n        <!-- use of time() function as non literal is not permitted and gives null -->\n        <!-- shows range literal using input data as argument to time() -->\n        <variable name=\"decision009_c\"/>\n        <informationRequirement>\n            <requiredInput href=\"#_input_001\"/>\n        </informationRequirement>\n        <literalExpression>\n            <text>range(\"[time(input_001)..@\\\"00:00:00\\\"]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision010_a\" id=\"_decision010_a\">\n        <!-- use of duration() function literal is permitted -->\n        <variable name=\"decision010_a\"/>\n        <literalExpression>\n            <text>range(\"[duration(\\\"P1D\\\")..@\\\"P2D\\\"]\") = [@\"P1D\"..@\"P2D\"]</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision010_b\" id=\"_decision010_b\">\n        <!-- use of duration() function as non literal is not permitted and gives null-->\n        <!-- the usage of string() here causes start endPoint to be non-literal -->\n        <variable name=\"decision010_b\"/>\n        <literalExpression>\n            <text>range(\"[duration(string(\\\"P1D\\\"))..@\\\"P2D\\\"]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision010_c\" id=\"_decision010_c\">\n        <!-- use of duration() function as non literal is not permitted and gives null-->\n        <!-- shows range literal using input data as argument to duration() -->\n        <variable name=\"decision010_c\"/>\n        <informationRequirement>\n            <requiredInput href=\"#_input_001\"/>\n        </informationRequirement>\n        <literalExpression>\n            <text>range(\"[duration(input_001)..@\\\"P2D\\\"]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision011\" id=\"_decision011\">\n        <!-- named argument -->\n        <variable name=\"decision011\"/>\n        <literalExpression>\n            <text>range(from: \"[1..3]\") = [1..3]</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision012\" id=\"_decision012\">\n        <!-- invalidly named argument \'fron\' gives null  -->\n        <variable name=\"decision012\"/>\n        <literalExpression>\n            <text>range(fron: \"[1..3]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision013_a\" id=\"_decision013_a\">\n        <!-- too many arguments gives null -->\n        <variable name=\"decision013_a\"/>\n        <literalExpression>\n            <text>range(\"[1..3]\", \"foo\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision013_b\" id=\"_decision013_b\">\n        <!-- too few arguments gives null -->\n        <variable name=\"decision013_b\"/>\n        <literalExpression>\n            <text>range()</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision014\" id=\"_decision014\">\n        <!-- invalid type gives null -->\n        <variable name=\"decision014\"/>\n        <literalExpression>\n            <text>range([1..3])</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision015_a\" id=\"_decision015_a\">\n        <!-- empty string gives null -->\n        <variable name=\"decision015_a\"/>\n        <literalExpression>\n            <text>range(\"\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision015_b\" id=\"_decision015_b\">\n        <!-- whitespace only gives null -->\n        <variable name=\"decision015_b\"/>\n        <literalExpression>\n            <text>range(\" \")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision016\" id=\"_decision016\">\n        <!-- non-literal argument provides invalid range string gives null -->\n        <variable name=\"decision016\"/>\n        <literalExpression>\n            <text>range(string(\"\"))</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision017\" id=\"_decision017\">\n        <!-- a unary range is not a valid literal range string -->\n        <variable name=\"decision017\"/>\n        <literalExpression>\n            <text>range(\">=10\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision018\" id=\"_decision018\">\n        <!-- mismatching endpoint types gives null -->\n        <variable name=\"decision018\"/>\n        <literalExpression>\n            <text>range(\"[1..\\\"b\\\"]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision019_a\" id=\"_decision019_sa\">\n        <!-- date, and date and time end points are not equivalent and gives null -->\n        <variable name=\"decision019_a\"/>\n        <literalExpression>\n            <text>range(\"[@\\\"1970-01-01\\\"..@\\\"1970-01-02T00:00:00\\\"]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision019_b\" id=\"_decision019_b\">\n        <!-- date, and date and time end points are not equivalent and gives null -->\n        <variable name=\"decision019_b\"/>\n        <literalExpression>\n            <text>range(\"[@\\\"1970-01-01T00:00:00\\\"..@\\\"1970-01-02\\\"]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision020\" id=\"_decision020\">\n        <!-- a descending numeric range gives null -->\n        <variable name=\"decision020\"/>\n        <literalExpression>\n            <text>range(\"[3..1]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision021\" id=\"_decision021\">\n        <!-- a descending date range gives null -->\n        <variable name=\"decision021\"/>\n        <literalExpression>\n            <text>range(\"[@\\\"1970-01-02\\\"..@\\\"1970-01-01\\\"]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision022\" id=\"_decision022\">\n        <!-- a descending date time range gives null -->\n        <variable name=\"decision022\"/>\n        <literalExpression>\n            <text>range(\"[@\\\"1970-01-02T00:00:00\\\"..@\\\"1970-01-01T00:00:00\\\"]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision023\" id=\"_decision023\">\n        <!-- a descending string range gives null -->\n        <variable name=\"decision023\"/>\n        <literalExpression>\n            <text>range(\"[\\\"z\\\"..\\\"a\\\"]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision024\" id=\"_decision024\">\n        <!-- a descending date duration range gives null -->\n        <variable name=\"decision024\"/>\n        <literalExpression>\n            <text>range(\"[@\\\"P2D\\\"..@\\\"P1D\\\"]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision025\" id=\"_decision025\">\n        <!-- a descending years duration range gives null -->\n        <variable name=\"decision025\"/>\n        <literalExpression>\n            <text>range(\"[@\\\"P2Y\\\"..@\\\"P1Y\\\"]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision026\" id=\"_decision026\">\n        <!-- a descending time range gives null -->\n        <variable name=\"decision026\"/>\n        <literalExpression>\n            <text>range(\"[@\\\"02:00:00\\\"..@\\\"01:00:00\\\"]\")</text>\n        </literalExpression>\n    </decision>\n\n    <decision name=\"decision027\" id=\"_decision027\">\n        <!-- both null endpoints gives null -->\n        <variable name=\"decision027\"/>\n        <literalExpression>\n            <text>range(\"[null..null]\")</text>\n        </literalExpression>\n    </decision>\n\n</definitions>\n";