Files
mars/MARS_Packages/REL02/MARS-1046/test/test_mars1046.sql
2026-02-02 11:18:42 +01:00

122 lines
4.2 KiB
SQL

-- ===================================================================
-- MARS-1046 Test Script: ISO 8601 Date Format Normalization
-- ===================================================================
-- Purpose: Test NORMALIZE_DATE_FORMAT function and external table integration
-- Author: Grzegorz Michalski
-- Date: 2025-11-27
-- ===================================================================
SET SERVEROUTPUT ON;
PROMPT ========================================
PROMPT MARS-1046: Test Suite
PROMPT ========================================
-- Test 1: Verify package version
PROMPT
PROMPT Test 1: Verify FILE_MANAGER version
SELECT FILE_MANAGER.GET_VERSION() AS VERSION FROM DUAL;
-- Expected: 3.3.1
-- Test 2: Check build info
PROMPT
PROMPT Test 2: Check build information
SELECT FILE_MANAGER.GET_BUILD_INFO() AS BUILD_INFO FROM DUAL;
-- Test 3: Verify package changes
PROMPT
PROMPT Test 3: Verify no untracked changes
SELECT CT_MRDS.ENV_MANAGER.CHECK_PACKAGE_CHANGES('CT_MRDS', 'FILE_MANAGER') AS STATUS FROM DUAL;
-- Expected: OK: Package CT_MRDS.FILE_MANAGER has not changed.
-- Test 4: Check compilation status
PROMPT
PROMPT Test 4: Check compilation status
SELECT object_name, object_type, status
FROM ALL_OBJECTS
WHERE OWNER = 'CT_MRDS'
AND OBJECT_NAME = 'FILE_MANAGER';
-- Expected: Both PACKAGE and PACKAGE BODY with STATUS = VALID
-- Test 5: Manual test of NORMALIZE_DATE_FORMAT logic
PROMPT
PROMPT Test 5: Manual format normalization tests
PROMPT
PROMPT Test Case 1: ISO 8601 with T separator
PROMPT Input: YYYY-MM-DDTHH24:MI:SS.FF3TZH:TZM
PROMPT Expected: YYYY-MM-DD"T"HH24:MI:SS.FF3TZH:TZM
PROMPT
DECLARE
vInput VARCHAR2(200) := 'YYYY-MM-DDTHH24:MI:SS.FF3TZH:TZM';
vExpected VARCHAR2(200) := 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZH:TZM';
vActual VARCHAR2(200);
BEGIN
-- Simulate NORMALIZE_DATE_FORMAT logic
vActual := vInput;
IF INSTR(vActual, '"T"') = 0 AND REGEXP_LIKE(vActual, '[YMD]T[HM]') THEN
vActual := REGEXP_REPLACE(vActual, '([YMD])T([HM])', '\1"T"\2');
END IF;
DBMS_OUTPUT.PUT_LINE('Input: ' || vInput);
DBMS_OUTPUT.PUT_LINE('Expected: ' || vExpected);
DBMS_OUTPUT.PUT_LINE('Actual: ' || vActual);
DBMS_OUTPUT.PUT_LINE('Result: ' || CASE WHEN vActual = vExpected THEN 'PASS' ELSE 'FAIL' END);
END;
/
PROMPT
PROMPT Test Case 2: Standard format (no change expected)
PROMPT Input: DD/MM/YYYY HH24:MI:SS
PROMPT Expected: DD/MM/YYYY HH24:MI:SS (unchanged)
PROMPT
DECLARE
vInput VARCHAR2(200) := 'DD/MM/YYYY HH24:MI:SS';
vExpected VARCHAR2(200) := 'DD/MM/YYYY HH24:MI:SS';
vActual VARCHAR2(200);
BEGIN
vActual := vInput;
IF INSTR(vActual, '"T"') = 0 AND REGEXP_LIKE(vActual, '[YMD]T[HM]') THEN
vActual := REGEXP_REPLACE(vActual, '([YMD])T([HM])', '\1"T"\2');
END IF;
DBMS_OUTPUT.PUT_LINE('Input: ' || vInput);
DBMS_OUTPUT.PUT_LINE('Expected: ' || vExpected);
DBMS_OUTPUT.PUT_LINE('Actual: ' || vActual);
DBMS_OUTPUT.PUT_LINE('Result: ' || CASE WHEN vActual = vExpected THEN 'PASS' ELSE 'FAIL' END);
END;
/
PROMPT
PROMPT Test Case 3: Already quoted T (no change)
PROMPT Input: YYYY-MM-DD"T"HH24:MI:SS
PROMPT Expected: YYYY-MM-DD"T"HH24:MI:SS (unchanged)
PROMPT
DECLARE
vInput VARCHAR2(200) := 'YYYY-MM-DD"T"HH24:MI:SS';
vExpected VARCHAR2(200) := 'YYYY-MM-DD"T"HH24:MI:SS';
vActual VARCHAR2(200);
BEGIN
vActual := vInput;
IF INSTR(vActual, '"T"') = 0 AND REGEXP_LIKE(vActual, '[YMD]T[HM]') THEN
vActual := REGEXP_REPLACE(vActual, '([YMD])T([HM])', '\1"T"\2');
END IF;
DBMS_OUTPUT.PUT_LINE('Input: ' || vInput);
DBMS_OUTPUT.PUT_LINE('Expected: ' || vExpected);
DBMS_OUTPUT.PUT_LINE('Actual: ' || vActual);
DBMS_OUTPUT.PUT_LINE('Result: ' || CASE WHEN vActual = vExpected THEN 'PASS' ELSE 'FAIL' END);
END;
/
PROMPT
PROMPT ========================================
PROMPT Test Suite Complete
PROMPT ========================================
PROMPT
PROMPT To test with actual external table:
PROMPT 1. Configure date format: CALL FILE_MANAGER.ADD_COLUMN_DATE_FORMAT(...)
PROMPT 2. Create external table: CALL FILE_MANAGER.CREATE_EXTERNAL_TABLE(...)
PROMPT 3. Check DDL: SELECT DBMS_METADATA.GET_DDL('TABLE', 'EXT_TABLE', 'ODS') FROM DUAL;
PROMPT 4. Verify date format has quoted T: DATE 'YYYY-MM-DD"T"HH24:MI:SS...'
PROMPT ========================================