You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by ca...@apache.org on 2005/05/05 11:46:12 UTC
cvs commit: xml-xerces/c/tests/XSValueTest XSValueTest.cpp
cargilld 2005/05/05 02:46:12
Modified: c/src/xercesc/util XMLAbstractDoubleFloat.hpp
c/src/xercesc/framework/psvi XSValue.cpp XSValue.hpp
c/tests/XSValueTest XSValueTest.cpp
Log:
Update XSValue to handle float and double the same way the main library does, converting values to infinityr or zero, as the C ranges for float and double are less than the schema ranges.
Revision Changes Path
1.25 +11 -1 xml-xerces/c/src/xercesc/util/XMLAbstractDoubleFloat.hpp
Index: XMLAbstractDoubleFloat.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLAbstractDoubleFloat.hpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- XMLAbstractDoubleFloat.hpp 9 Sep 2004 20:09:30 -0000 1.24
+++ XMLAbstractDoubleFloat.hpp 5 May 2005 09:46:11 -0000 1.25
@@ -17,6 +17,9 @@
/*
* $Id$
* $Log$
+ * Revision 1.25 2005/05/05 09:46:11 cargilld
+ * Update XSValue to handle float and double the same way the main library does, converting values to infinityr or zero, as the C ranges for float and double are less than the schema ranges.
+ *
* Revision 1.24 2004/09/09 20:09:30 peiyongz
* getDataOverflowed()
*
@@ -182,6 +185,8 @@
inline double getValue() const;
+ inline LiteralType getType() const;
+
/***
*
* The decimal point delimiter for the schema double/float type is
@@ -295,6 +300,11 @@
return fValue;
}
+inline XMLAbstractDoubleFloat::LiteralType XMLAbstractDoubleFloat::getType() const
+{
+ return fType;
+}
+
XERCES_CPP_NAMESPACE_END
#endif
1.24 +51 -28 xml-xerces/c/src/xercesc/framework/psvi/XSValue.cpp
Index: XSValue.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/psvi/XSValue.cpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- XSValue.cpp 22 Apr 2005 20:02:34 -0000 1.23
+++ XSValue.cpp 5 May 2005 09:46:11 -0000 1.24
@@ -16,6 +16,9 @@
/*
* $Log$
+ * Revision 1.24 2005/05/05 09:46:11 cargilld
+ * Update XSValue to handle float and double the same way the main library does, converting values to infinityr or zero, as the C ranges for float and double are less than the schema ranges.
+ *
* Revision 1.23 2005/04/22 20:02:34 cargilld
* Use isspace instead of isSpace as data is char not xmlch.
*
@@ -535,11 +538,6 @@
//XMLFloat takes care of 0, -0, -INF, INF and NaN
//XMLFloat::checkBoundary() handles error and outofbound issues
XMLFloat data(content, manager);
- if (data.isDataConverted())
- {
- status = st_FOCA0002;
- return false;
- }
break;
}
case XSValue::dt_double:
@@ -547,11 +545,6 @@
//XMLDouble takes care of 0, -0, -INF, INF and NaN
//XMLDouble::checkBoundary() handles error and outofbound issues
XMLDouble data(content, manager);
- if (data.isDataConverted())
- {
- status = st_FOCA0002;
- return false;
- }
break;
}
/***
@@ -1336,35 +1329,65 @@
//XMLFloat takes care of 0, -0, -INF, INF and NaN
//XMLFloat::checkBoundary() handles error and outofbound issues
XMLFloat data(content, manager);
+ XSValue* retVal = new (manager) XSValue(dt_float, manager);
+
if (data.isDataConverted())
{
- status = st_FOCA0002;
- return 0;
- }
- else
- {
- XSValue* retVal = new (manager) XSValue(dt_float, manager);
- retVal->fData.fValue.f_float = (float) data.getValue();
- return retVal;
+ retVal->fData.fValue.f_floatType.f_float = 0.0;
+ retVal->fData.fValue.f_floatType.f_floatEnum = DoubleFloatType_Zero;
+
+ switch(data.getType()) {
+ case XMLAbstractDoubleFloat::NegINF:
+ retVal->fData.fValue.f_floatType.f_floatEnum = DoubleFloatType_NegINF;
+ break;
+ case XMLAbstractDoubleFloat::PosINF:
+ retVal->fData.fValue.f_floatType.f_floatEnum = DoubleFloatType_PosINF;
+ break;
+ case XMLAbstractDoubleFloat::NaN:
+ retVal->fData.fValue.f_floatType.f_floatEnum = DoubleFloatType_NaN;
+ break;
+ default:
+ break;
+ }
}
- break;
+ else {
+ retVal->fData.fValue.f_floatType.f_floatEnum = DoubleFloatType_Normal;
+ retVal->fData.fValue.f_floatType.f_float = (float) data.getValue();
+ }
+ return retVal;
+ break;
}
case XSValue::dt_double:
{
//XMLDouble takes care of 0, -0, -INF, INF and NaN
//XMLDouble::checkBoundary() handles error and outofbound issues
XMLDouble data(content, manager);
+ XSValue* retVal = new (manager) XSValue(dt_double, manager);
+
if (data.isDataConverted())
{
- status = st_FOCA0002;
- return 0;
- }
- else
- {
- XSValue* retVal = new (manager) XSValue(dt_double, manager);
- retVal->fData.fValue.f_double = data.getValue();
- return retVal;
+ retVal->fData.fValue.f_doubleType.f_double = 0.0;
+ retVal->fData.fValue.f_doubleType.f_doubleEnum = DoubleFloatType_Zero;
+
+ switch(data.getType()) {
+ case XMLAbstractDoubleFloat::NegINF:
+ retVal->fData.fValue.f_doubleType.f_doubleEnum = DoubleFloatType_NegINF;
+ break;
+ case XMLAbstractDoubleFloat::PosINF:
+ retVal->fData.fValue.f_doubleType.f_doubleEnum = DoubleFloatType_PosINF;
+ break;
+ case XMLAbstractDoubleFloat::NaN:
+ retVal->fData.fValue.f_doubleType.f_doubleEnum = DoubleFloatType_NaN;
+ break;
+ default:
+ break;
+ }
}
+ else {
+ retVal->fData.fValue.f_doubleType.f_doubleEnum = DoubleFloatType_Normal;
+ retVal->fData.fValue.f_doubleType.f_double = data.getValue();
+ }
+ return retVal;
break;
}
case XSValue::dt_integer:
1.20 +26 -2 xml-xerces/c/src/xercesc/framework/psvi/XSValue.hpp
Index: XSValue.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/psvi/XSValue.hpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- XSValue.hpp 23 Dec 2004 16:11:21 -0000 1.19
+++ XSValue.hpp 5 May 2005 09:46:11 -0000 1.20
@@ -16,6 +16,9 @@
/*
* $Log$
+ * Revision 1.20 2005/05/05 09:46:11 cargilld
+ * Update XSValue to handle float and double the same way the main library does, converting values to infinityr or zero, as the C ranges for float and double are less than the schema ranges.
+ *
* Revision 1.19 2004/12/23 16:11:21 cargilld
* Various XSValue updates: use ulong for postiveInteger; reset date fields to zero; modifty XSValueTest to test the returned value from getActualValue.
*
@@ -154,7 +157,7 @@
st_NotSupported,
st_CantCreateRegEx,
st_FOCA0002, //invalid lexical value
- st_FOCA0001, //input value too large for decimal
+ st_FOCA0001, //input value too large/too small for decimal
st_FOCA0003, //input value too large for integer
st_FODT0003, //invalid timezone value
st_UnknownType
@@ -166,6 +169,15 @@
dg_strings
};
+ enum DoubleFloatType
+ {
+ DoubleFloatType_NegINF,
+ DoubleFloatType_PosINF,
+ DoubleFloatType_NaN,
+ DoubleFloatType_Zero,
+ DoubleFloatType_Normal
+ };
+
// Constructors and Destructor
// -----------------------------------------------------------------------
/** @name Destructor */
@@ -284,6 +296,18 @@
} f_datetime;
+ struct doubletype {
+ double f_double;
+ DoubleFloatType f_doubleEnum;
+ } f_doubleType;
+
+ struct floattype {
+ float f_float;
+ DoubleFloatType f_floatEnum;
+ } f_floatType;
+
+
+
} fValue;
} fData;
1.17 +85 -60 xml-xerces/c/tests/XSValueTest/XSValueTest.cpp
Index: XSValueTest.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/tests/XSValueTest/XSValueTest.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- XSValueTest.cpp 5 Apr 2005 20:26:48 -0000 1.16
+++ XSValueTest.cpp 5 May 2005 09:46:11 -0000 1.17
@@ -17,6 +17,9 @@
/*
* $Id$
* $Log$
+* Revision 1.17 2005/05/05 09:46:11 cargilld
+* Update XSValue to handle float and double the same way the main library does, converting values to infinityr or zero, as the C ranges for float and double are less than the schema ranges.
+*
* Revision 1.16 2005/04/05 20:26:48 cargilld
* Update XSValue to handle leading and trailing whitespace.
*
@@ -209,20 +212,41 @@
return false;
case XSValue::dt_decimal:
- case XSValue::dt_double:
if (fabs(actValue.fValue.f_double - expValue.fValue.f_double) < fabs(actValue.fValue.f_double)/1000)
return true;
printf("ACTVALUE_TEST Unexpected XSValue for datatype %s, got %f expected %f\n", StrX(getDataTypeString(datatype)).localForm(),
- actValue.fValue.f_double, expValue.fValue.f_double);
- return false;
-
- case XSValue::dt_float:
- if (fabs(actValue.fValue.f_float - expValue.fValue.f_float) < fabs(actValue.fValue.f_float)/1000)
- return true;
- printf("ACTVALUE_TEST Unexpected XSValue for dt_float, got %f expected %f\n",
- actValue.fValue.f_float, expValue.fValue.f_float);
+ actValue.fValue.f_double, expValue.fValue.f_double);
return false;
-
+ case XSValue::dt_double:
+ if (actValue.fValue.f_doubleType.f_doubleEnum == XSValue::DoubleFloatType_Normal) {
+ if (fabs(actValue.fValue.f_double - expValue.fValue.f_double) < fabs(actValue.fValue.f_double)/1000)
+ return true;
+ printf("ACTVALUE_TEST Unexpected XSValue for datatype %s, got %f expected %f\n", StrX(getDataTypeString(datatype)).localForm(),
+ actValue.fValue.f_double, expValue.fValue.f_double);
+ return false;
+ }
+ else {
+ if (actValue.fValue.f_doubleType.f_doubleEnum == expValue.fValue.f_doubleType.f_doubleEnum)
+ return true;
+ printf("ACTVALUE_TEST Unexpected XSValue enum for datatype %s, got %d expected %d\n", StrX(getDataTypeString(datatype)).localForm(),
+ actValue.fValue.f_doubleType.f_doubleEnum, expValue.fValue.f_doubleType.f_doubleEnum);
+ return false;
+ }
+ case XSValue::dt_float:
+ if (actValue.fValue.f_floatType.f_floatEnum == XSValue::DoubleFloatType_Normal) {
+ if (fabs(actValue.fValue.f_float - expValue.fValue.f_float) < fabs(actValue.fValue.f_float)/1000)
+ return true;
+ printf("ACTVALUE_TEST Unexpected XSValue for datatype %s, got %f expected %f\n", StrX(getDataTypeString(datatype)).localForm(),
+ actValue.fValue.f_float, expValue.fValue.f_float);
+ return false;
+ }
+ else {
+ if (actValue.fValue.f_floatType.f_floatEnum == expValue.fValue.f_floatType.f_floatEnum)
+ return true;
+ printf("ACTVALUE_TEST Unexpected XSValue enum for datatype %s, got %d expected %d\n", StrX(getDataTypeString(datatype)).localForm(),
+ actValue.fValue.f_floatType.f_floatEnum, expValue.fValue.f_floatType.f_floatEnum);
+ return false;
+ }
case XSValue::dt_duration:
case XSValue::dt_dateTime:
case XSValue::dt_time:
@@ -974,6 +998,15 @@
const char lex_v_ran_iv_3[]="+1.175494351e-39";
const char lex_v_ran_iv_4[]="-1.175494351e-39";
+ XSValue::XSValue_Data lex_iv_ran_v_1; lex_iv_ran_v_1.fValue.f_float = (float)0.0;
+ lex_iv_ran_v_1.fValue.f_floatType.f_floatEnum = XSValue::DoubleFloatType_PosINF;
+ XSValue::XSValue_Data lex_iv_ran_v_2; lex_iv_ran_v_2.fValue.f_float = (float)0.0;
+ lex_iv_ran_v_2.fValue.f_floatType.f_floatEnum = XSValue::DoubleFloatType_NegINF;
+ XSValue::XSValue_Data lex_iv_ran_v_3; lex_iv_ran_v_3.fValue.f_float = (float)0.0;
+ lex_iv_ran_v_3.fValue.f_floatType.f_floatEnum = XSValue::DoubleFloatType_Zero;
+ XSValue::XSValue_Data lex_iv_ran_v_4; lex_iv_ran_v_4.fValue.f_float = (float)0.0;
+ lex_iv_ran_v_4.fValue.f_floatType.f_floatEnum = XSValue::DoubleFloatType_Zero;
+
const char lex_v_ran_iv_1_canrep[]="3.402823466E39";
const char lex_v_ran_iv_2_canrep[]="-3.402823466E39";
const char lex_v_ran_iv_3_canrep[]="1.175494351E-39";
@@ -1029,10 +1062,10 @@
VALIDATE_TEST(lex_v_ran_v_4 , dt, EXP_RET_VALID_TRUE, DONT_CARE);
// lexical valid, range invalid
- VALIDATE_TEST(lex_v_ran_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002);
- VALIDATE_TEST(lex_v_ran_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002);
- VALIDATE_TEST(lex_v_ran_iv_3 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002);
- VALIDATE_TEST(lex_v_ran_iv_4 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002);
+ VALIDATE_TEST(lex_v_ran_iv_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE);
+ VALIDATE_TEST(lex_v_ran_iv_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE);
+ VALIDATE_TEST(lex_v_ran_iv_3 , dt, EXP_RET_VALID_TRUE, DONT_CARE);
+ VALIDATE_TEST(lex_v_ran_iv_4 , dt, EXP_RET_VALID_TRUE, DONT_CARE);
// lexical invalid
VALIDATE_TEST(lex_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002);
@@ -1073,10 +1106,10 @@
ACTVALUE_TEST(lex_v_ran_v_4, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_4);
// lexical valid, range invalid
- ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
- ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
- ACTVALUE_TEST(lex_v_ran_iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
- ACTVALUE_TEST(lex_v_ran_iv_4, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+ ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, lex_iv_ran_v_1);
+ ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, lex_iv_ran_v_2);
+ ACTVALUE_TEST(lex_v_ran_iv_3, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, lex_iv_ran_v_3);
+ ACTVALUE_TEST(lex_v_ran_iv_4, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, lex_iv_ran_v_4);
// lexical invalid
ACTVALUE_TEST(lex_iv_1 , dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
@@ -1121,23 +1154,15 @@
// lexical invalid
CANREP_TEST(lex_iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, 0, XSValue::st_FOCA0002);
CANREP_TEST(lex_iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, 0, XSValue::st_FOCA0002);
- }
-
- // lexical valid, range invalid
-
- toValidate = true;
- CANREP_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, 0, XSValue::st_FOCA0002);
- CANREP_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, 0, XSValue::st_FOCA0002);
- CANREP_TEST(lex_v_ran_iv_3, dt, toValidate, EXP_RET_CANREP_FALSE, 0, XSValue::st_FOCA0002);
- CANREP_TEST(lex_v_ran_iv_4, dt, toValidate, EXP_RET_CANREP_FALSE, 0, XSValue::st_FOCA0002);
-
- toValidate = false;
- CANREP_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_1_canrep, DONT_CARE);
- CANREP_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_2_canrep, DONT_CARE);
- CANREP_TEST(lex_v_ran_iv_3, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_3_canrep, DONT_CARE);
- CANREP_TEST(lex_v_ran_iv_4, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_4_canrep, DONT_CARE);
+ // lexical valid, range invalid (however XML4C ignores that)
+ CANREP_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_1_canrep, DONT_CARE);
+ CANREP_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_2_canrep, DONT_CARE);
+ CANREP_TEST(lex_v_ran_iv_3, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_3_canrep, DONT_CARE);
+ CANREP_TEST(lex_v_ran_iv_4, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_4_canrep, DONT_CARE);
+ }
}
+
/***
DBL_EPSILON 2.2204460492503131e-016
DBL_MAX 1.7976931348623158e+308
@@ -1150,7 +1175,7 @@
bool toValidate = true;
const char lex_v_ran_v_0[]=" 1234.e+10 \n";
- const char lex_v_ran_v_1[]="+1.7976931348623158e+308";
+ const char lex_v_ran_v_1[]="+1.7976931348623158e+308";
const char lex_v_ran_v_2[]="-1.7976931348623158e+308";
const char lex_v_ran_v_3[]="+2.2250738585072014e-308";
const char lex_v_ran_v_4[]="-2.2250738585072014e-308";
@@ -1174,6 +1199,15 @@
const char lex_v_ran_iv_3_canrep[]="2.2250738585072014E-329";
const char lex_v_ran_iv_4_canrep[]="-2.2250738585072014E-329";
+ XSValue::XSValue_Data lex_iv_ran_v_1; lex_iv_ran_v_1.fValue.f_double = (double)0.0;
+ lex_iv_ran_v_1.fValue.f_doubleType.f_doubleEnum = XSValue::DoubleFloatType_PosINF;
+ XSValue::XSValue_Data lex_iv_ran_v_2; lex_iv_ran_v_2.fValue.f_double = (double)0.0;
+ lex_iv_ran_v_2.fValue.f_doubleType.f_doubleEnum = XSValue::DoubleFloatType_NegINF;
+ XSValue::XSValue_Data lex_iv_ran_v_3; lex_iv_ran_v_3.fValue.f_double = (double)0.0;
+ lex_iv_ran_v_3.fValue.f_doubleType.f_doubleEnum = XSValue::DoubleFloatType_Zero;
+ XSValue::XSValue_Data lex_iv_ran_v_4; lex_iv_ran_v_4.fValue.f_double = (double)0.0;
+ lex_iv_ran_v_4.fValue.f_doubleType.f_doubleEnum = XSValue::DoubleFloatType_Zero;
+
const char lex_iv_1[]="12x.e+10";
const char lex_iv_2[]="12.e+1x";
@@ -1223,11 +1257,11 @@
VALIDATE_TEST(lex_v_ran_v_3 , dt, EXP_RET_VALID_TRUE, DONT_CARE);
VALIDATE_TEST(lex_v_ran_v_4 , dt, EXP_RET_VALID_TRUE, DONT_CARE);
- // lexical valid, range invalid
- VALIDATE_TEST(lex_v_ran_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002);
- VALIDATE_TEST(lex_v_ran_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002);
- VALIDATE_TEST(lex_v_ran_iv_3 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002);
- VALIDATE_TEST(lex_v_ran_iv_4 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002);
+ // lexical valid, range invalid however XML4C converts to INF / ZERO
+ VALIDATE_TEST(lex_v_ran_iv_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE);
+ VALIDATE_TEST(lex_v_ran_iv_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE);
+ VALIDATE_TEST(lex_v_ran_iv_3 , dt, EXP_RET_VALID_TRUE, DONT_CARE);
+ VALIDATE_TEST(lex_v_ran_iv_4 , dt, EXP_RET_VALID_TRUE, DONT_CARE);
// lexical invalid
VALIDATE_TEST(lex_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002);
@@ -1267,11 +1301,11 @@
ACTVALUE_TEST(lex_v_ran_v_3, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_3);
ACTVALUE_TEST(lex_v_ran_v_4, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_4);
- // lexical valid, range invalid
- ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
- ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
- ACTVALUE_TEST(lex_v_ran_iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
- ACTVALUE_TEST(lex_v_ran_iv_4, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
+ // lexical valid, range invalid
+ ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, lex_iv_ran_v_1);
+ ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, lex_iv_ran_v_2);
+ ACTVALUE_TEST(lex_v_ran_iv_3, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, lex_iv_ran_v_3);
+ ACTVALUE_TEST(lex_v_ran_iv_4, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, lex_iv_ran_v_4);
// lexical invalid
ACTVALUE_TEST(lex_iv_1 , dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0);
@@ -1316,22 +1350,13 @@
// lexical invalid
CANREP_TEST(lex_iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, 0, XSValue::st_FOCA0002);
CANREP_TEST(lex_iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, 0, XSValue::st_FOCA0002);
- }
-
- // lexical valid, range invalid
-
- toValidate = true;
- CANREP_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, 0, XSValue::st_FOCA0002);
- CANREP_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, 0, XSValue::st_FOCA0002);
- CANREP_TEST(lex_v_ran_iv_3, dt, toValidate, EXP_RET_CANREP_FALSE, 0, XSValue::st_FOCA0002);
- CANREP_TEST(lex_v_ran_iv_4, dt, toValidate, EXP_RET_CANREP_FALSE, 0, XSValue::st_FOCA0002);
-
- toValidate = false;
- CANREP_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_1_canrep, DONT_CARE);
- CANREP_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_2_canrep, DONT_CARE);
- CANREP_TEST(lex_v_ran_iv_3, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_3_canrep, DONT_CARE);
- CANREP_TEST(lex_v_ran_iv_4, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_4_canrep, DONT_CARE);
+ // lexical valid, range invalid (XML4C doesn't treat as invalid)
+ CANREP_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_1_canrep, DONT_CARE);
+ CANREP_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_2_canrep, DONT_CARE);
+ CANREP_TEST(lex_v_ran_iv_3, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_3_canrep, DONT_CARE);
+ CANREP_TEST(lex_v_ran_iv_4, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_4_canrep, DONT_CARE);
+ }
}
/***
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org