Corner case testing untuk validasi parser dengan deep nesting (5+ levels) dan complex nested structures seperti nested arrays dan objects dalam berbagai kombinasi.
Configuration dengan hierarchical structure yang kompleks, seperti routing rules dengan nested conditions dan transformations.
deepNested:
level1:
level2:
level3:
level4:
level5:
finalValue: reached_bottom
deepArray:
- item1
- item2
complexMapping:
rules:
- condition: status == SUCCESS
action: PROCEED
mapping:
sourceField: response.data.id
targetField: output.transactionId
transformation: UPPERCASE
fallback:
- condition: status == FAILED
action: RETRY
mapping:
sourceField: response.error.code
targetField: output.errorCode
retryConfig:
maxAttempts: 3
backoffMs: 1000
- condition: status == TIMEOUT
action: CANCEL
notification:
- email
- sms
- webhook
metadata:
version: 2.1.0
author: ACE Team
tags:
- production
- critical
- payment
{
"deepNested": {
"level1": {
"level2": {
"level3": {
"level4": {
"level5": {
"finalValue": "reached_bottom",
"deepArray": ["item1", "item2"]
}
}
}
}
},
"complexMapping": {
"rules": [
{
"condition": "status == SUCCESS",
"action": "PROCEED",
"mapping": {
"sourceField": "response.data.id",
"targetField": "output.transactionId",
"transformation": "UPPERCASE"
},
"fallback": ""
},
{
"condition": "status == FAILED",
"action": "RETRY",
"mapping": {
"sourceField": "response.error.code",
"targetField": "output.errorCode"
},
"retryConfig": {
"maxAttempts": "3",
"backoffMs": "1000"
}
},
{
"condition": "status == TIMEOUT",
"action": "CANCEL",
"notification": ["email", "sms", "webhook"]
}
]
},
"metadata": {
"version": "2.1.0",
"author": "ACE Team",
"tags": ["production", "critical", "payment"]
}
}
}
DECLARE config REFERENCE TO Environment.Variables;
DECLARE success BOOLEAN;
CALL ACE_LIB.getConfig(
'COMPLEX_CONFIG',
'deepNested',
'/path/to/CONFIG4.yaml',
'600',
config
) INTO success;
IF success THEN
-- Access deep nested value (5 levels)
DECLARE deepValue CHARACTER
config.level1.level2.level3.level4.level5.finalValue;
-- Result: "reached_bottom"
-- Access array in deep nested object
DECLARE deepArrayItem CHARACTER
config.level1.level2.level3.level4.level5.deepArray[1];
-- Result: "item1"
-- Process complex rules array
DECLARE ruleRef REFERENCE TO config.complexMapping.rules[1];
WHILE LASTMOVE(ruleRef) DO
DECLARE condition CHARACTER ruleRef.condition;
DECLARE action CHARACTER ruleRef.action;
-- Check for nested mapping object
IF ruleRef.mapping IS NOT NULL THEN
DECLARE sourceField CHARACTER ruleRef.mapping.sourceField;
DECLARE targetField CHARACTER ruleRef.mapping.targetField;
END IF;
-- Check for nested retryConfig object
IF ruleRef.retryConfig IS NOT NULL THEN
DECLARE maxRetries CHARACTER ruleRef.retryConfig.maxAttempts;
END IF;
-- Check for nested notification array
DECLARE notifRef REFERENCE TO ruleRef.notification[1];
IF LASTMOVE(notifRef) THEN
WHILE LASTMOVE(notifRef) DO
DECLARE channel CHARACTER notifRef;
-- "email", "sms", "webhook"
MOVE notifRef NEXTSIBLING;
END WHILE;
END IF;
MOVE ruleRef NEXTSIBLING;
END WHILE;
END IF;
✅ Deep nesting hingga 5+ levels
✅ Arrays dalam deep nested objects
✅ Array of complex objects
✅ Nested objects dalam array items (mapping, retryConfig)
✅ Nested arrays dalam array items (notification)
✅ Multiple nested structures dalam satu config