---
inputType: CA10__CaAwsInstance__c
conditions:
  - status: COMPLIANT
    currentStateMessage: Null and Null
    check:
      UNIT_TEST:
        id: Null-And-Null
        expected:
          text: "unitTest(Null-And-Null): null == null"
        arg:
          IS_EQUAL:
            left:
              UNIT_TEST_NULL:
                returnType: SET_OF_TEXT
            right:
              UNIT_TEST_NULL:
                returnType: SET_OF_TEXT
  - status: COMPLIANT
    currentStateMessage: Null and Empty
    check:
      UNIT_TEST:
        id: Null-And-Empty
        expected:
          text: "unitTest(Null-And-Empty): null == setOfText([])"
        arg:
          IS_EQUAL:
            left:
              UNIT_TEST_NULL:
                returnType: SET_OF_TEXT
            right:
              SET:
                itemType: TEXT
                items: []
  - status: COMPLIANT
    currentStateMessage: Empty and Empty Item
    check:
      UNIT_TEST:
        id: Empty-And-Empty-Item
        expected:
          text: "unitTest(Empty-And-Empty-Item): setOfText([]) == setOfText([''])"
        arg:
          IS_EQUAL:
            left:
              SET:
                itemType: TEXT
                items: []
            right:
              SET:
                itemType: TEXT
                items:
                  - ""
  - status: COMPLIANT
    currentStateMessage: Empty and Empty Items
    check:
      UNIT_TEST:
        id: Empty-And-Empty-Items
        expected:
          text: "unitTest(Empty-And-Empty-Items): setOfText([]) == setOfText(['', '', ''])"
        arg:
          IS_EQUAL:
            left:
              SET:
                itemType: TEXT
                items: []
            right:
              SET:
                itemType: TEXT
                items:
                  - ""
                  - ""
                  - ""
  - status: COMPLIANT
    currentStateMessage: One Empty and Many Empty
    check:
      UNIT_TEST:
        id: One-Empty-And-Many-Empty
        expected:
          text: "unitTest(One-Empty-And-Many-Empty): setOfText(['']) == setOfText(['', '', ''])"
        arg:
          IS_EQUAL:
            left:
              SET:
                itemType: TEXT
                items:
                  - ""
            right:
              SET:
                itemType: TEXT
                items:
                  - ""
                  - ""
                  - ""
  - status: COMPLIANT
    currentStateMessage: Same Number Of Empty
    check:
      UNIT_TEST:
        id: Same-Number-Of-Empty
        expected:
          text: "unitTest(Same-Number-Of-Empty): setOfText(['', '', '']) == setOfText(['', '', ''])"
        arg:
          IS_EQUAL:
            left:
              SET:
                itemType: TEXT
                items:
                  - ""
                  - ""
                  - ""
            right:
              SET:
                itemType: TEXT
                items:
                  - ""
                  - ""
                  - ""
  - status: COMPLIANT
    currentStateMessage: Empty with Whitespaces
    check:
      UNIT_TEST:
        id: Empty-With-Whitespaces
        expected:
          text: "unitTest(Empty-With-Whitespaces): setOfText(['']) == setOfText(['', '  ', '\\t', '\\n', '\\r', '  \\n\\r\\t  '])"
        arg:
          IS_EQUAL:
            left:
              SET:
                itemType: TEXT
                items:
                  - ""
            right:
              SET:
                itemType: TEXT
                items:
                  - ""
                  - "  "
                  - "\t"
                  - "\n"
                  - "\r"
                  - "  \n\r\t  "
  - status: COMPLIANT
    currentStateMessage: Empty with Whitespaces Size
    check:
      UNIT_TEST:
        id: Empty-With-Whitespaces-Size
        expected:
          text: "unitTest(Empty-With-Whitespaces-Size): setOfText(['', '  ', '\\t', '\\n', '\\r', '  \\n\\r\\t  ']).size() == number(0.0)"
        arg:
          IS_EQUAL:
            left:
              SIZE:
                arg:
                  SET:
                    itemType: TEXT
                    items:
                      - ""
                      - "  "
                      - "\t"
                      - "\n"
                      - "\r"
                      - "  \n\r\t  "
            right:
              NUMBER: 0
  - status: COMPLIANT
    currentStateMessage: Same Number Of Whitespaces
    check:
      UNIT_TEST:
        id: Same-Number-Of-Whitespaces
        expected:
          text: "unitTest(Same-Number-Of-Whitespaces): setOfText(['', ' ', '  ', '   ', '    ', '     ']) == setOfText(['', '  ', '\\t', '\\n', '\\r', '  \\n\\r\\t  '])"
        arg:
          IS_EQUAL:
            left:
              SET:
                itemType: TEXT
                items:
                  - ""
                  - " "
                  - "  "
                  - "   "
                  - "    "
                  - "     "
            right:
              SET:
                itemType: TEXT
                items:
                  - ""
                  - "  "
                  - "\t"
                  - "\n"
                  - "\r"
                  - "  \n\r\t  "
  - status: COMPLIANT
    currentStateMessage: Empty and Non-empty
    check:
      UNIT_TEST:
        id: Empty-And-Non-Empty
        expected:
          text: "unitTest(Empty-And-Non-Empty): setOfText(['a']) == setOfText([' ', 'a'])"
        arg:
          IS_EQUAL:
            left:
              SET:
                itemType: TEXT
                items:
                  - "a"
            right:
              SET:
                itemType: TEXT
                items:
                  - " "
                  - "a"
  - status: COMPLIANT
    currentStateMessage: Empty and Non-empty Size
    check:
      UNIT_TEST:
        id: Empty-And-Non-Empty-Size
        expected:
          text: "unitTest(Empty-And-Non-Empty-Size): setOfText([' ', 'a']).size() == number(1.0)"
        arg:
          IS_EQUAL:
            left:
              SIZE:
                arg:
                  SET:
                    itemType: TEXT
                    items:
                      - " "
                      - "a"
            right:
              NUMBER: 1
  - status: COMPLIANT
    currentStateMessage: Duplicate Values
    check:
      UNIT_TEST:
        id: Duplicate-Values
        expected:
          text: "unitTest(Duplicate-Values): setOfText(['a']) == setOfText(['a', 'a'])"
        arg:
          IS_EQUAL:
            left:
              SET:
                itemType: TEXT
                items:
                  - "a"
            right:
              SET:
                itemType: TEXT
                items:
                  - "a"
                  - "a"
  - status: COMPLIANT
    currentStateMessage: Duplicate Values Size
    check:
      UNIT_TEST:
        id: Duplicate-Values-Size
        expected:
          text: "unitTest(Duplicate-Values-Size): setOfText(['a', 'a']).size() == number(1.0)"
        arg:
          IS_EQUAL:
            left:
              SIZE:
                arg:
                  SET:
                    itemType: TEXT
                    items:
                      - "a"
                      - "a"
            right:
              NUMBER: 1
  - status: COMPLIANT
    currentStateMessage: Duplicate Values in Different Case
    check:
      UNIT_TEST:
        id: Duplicate-Values-Different-Case
        expected:
          text: "unitTest(Duplicate-Values-Different-Case): setOfText(['a', 'a']) == setOfText(['A', 'a'])"
        arg:
          IS_EQUAL:
            left:
              SET:
                itemType: TEXT
                items:
                  - "a"
                  - "a"
            right:
              SET:
                itemType: TEXT
                items:
                  - "A"
                  - "a"
  - status: COMPLIANT
    currentStateMessage: Duplicate Values in Different Case Size
    check:
      UNIT_TEST:
        id: Duplicate-Values-Different-Case-Size
        expected:
          text: "unitTest(Duplicate-Values-Different-Case-Size): setOfText(['A', 'a']).size() == number(1.0)"
        arg:
          IS_EQUAL:
            left:
              SIZE:
                arg:
                  SET:
                    itemType: TEXT
                    items:
                      - "A"
                      - "a"
            right:
              NUMBER: 1
  - status: COMPLIANT
    currentStateMessage: Duplicate Values with Whitespaces
    check:
      UNIT_TEST:
        id: Duplicate-Values-Whitespace
        expected:
          text: "unitTest(Duplicate-Values-Whitespace): setOfText(['a', 'a']) == setOfText([' a ', 'a'])"
        arg:
          IS_EQUAL:
            left:
              SET:
                itemType: TEXT
                items:
                  - "a"
                  - "a"
            right:
              SET:
                itemType: TEXT
                items:
                  - " a "
                  - "a"
  - status: COMPLIANT
    currentStateMessage: Duplicate Values with Whitespaces Size
    check:
      UNIT_TEST:
        id: Duplicate-Values-Whitespace-Size
        expected:
          text: "unitTest(Duplicate-Values-Whitespace-Size): setOfText([' a ', 'a']).size() == number(1.0)"
        arg:
          IS_EQUAL:
            left:
              SIZE:
                arg:
                  SET:
                    itemType: TEXT
                    items:
                      - " a "
                      - "a"
            right:
              NUMBER: 1
  - status: COMPLIANT
    currentStateMessage: Duplicate Values with Whitespaces Inside
    check:
      UNIT_TEST:
        id: Duplicate-Values-Whitespaces-Inside
        expected:
          text: "unitTest(Duplicate-Values-Whitespaces-Inside): setOfText(['a b', 'a b', 'a b']) == setOfText(['a b', 'a   b', 'a\\nb'])"
        arg:
          IS_EQUAL:
            left:
              SET:
                itemType: TEXT
                items:
                  - "a b"
                  - "a b"
                  - "a b"
            right:
              SET:
                itemType: TEXT
                items:
                  - "a b"
                  - "a   b"
                  - "a\nb"
  - status: COMPLIANT
    currentStateMessage: Duplicate Values with Whitespaces Inside Size
    check:
      UNIT_TEST:
        id: Duplicate-Values-Whitespaces-Inside-Size
        expected:
          text: "unitTest(Duplicate-Values-Whitespaces-Inside-Size): setOfText(['a b', 'a   b', 'a\\nb']).size() == number(1.0)"
        arg:
          IS_EQUAL:
            left:
              SIZE:
                arg:
                  SET:
                    itemType: TEXT
                    items:
                      - "a b"
                      - "a   b"
                      - "a\nb"
            right:
              NUMBER: 1
  - status: COMPLIANT
    currentStateMessage: Value Order
    check:
      UNIT_TEST:
        id: Value-Order
        expected:
          text: "unitTest(Value-Order): setOfText(['a', 'b']) == setOfText(['b', 'a'])"
        arg:
          IS_EQUAL:
            left:
              SET:
                itemType: TEXT
                items:
                  - "a"
                  - "b"
            right:
              SET:
                itemType: TEXT
                items:
                  - "b"
                  - "a"
otherwise:
  status: INCOMPLIANT
  currentStateMessage: Test Failed
  remediationMessage: Developer Fix Required