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