=== modified file 'src/compiler/parser/symbol_table.cpp'
--- src/compiler/parser/symbol_table.cpp 2013-05-09 18:03:47 +0000
+++ src/compiler/parser/symbol_table.cpp 2013-05-14 23:54:28 +0000
@@ -242,7 +242,6 @@
return new xs_decimal(text);
}
-// Will return NULL if std::range_error is raised
xs_double* symbol_table::doubleval(char const* text, size_t length)
{
try {
@@ -253,7 +252,6 @@
}
}
-// Will return NULL if std::range_error is raised
xs_integer* symbol_table::integerval(char const* text, size_t length)
{
try {
=== modified file 'src/diagnostics/diagnostic_en.xml'
--- src/diagnostics/diagnostic_en.xml 2013-05-04 21:54:40 +0000
+++ src/diagnostics/diagnostic_en.xml 2013-05-14 23:54:28 +0000
@@ -1301,9 +1301,9 @@
- Input value too large for integer.
+ Input value too large for integer.
- "$1": value too large for integer
+ "$1": value${ of type 2} too large for $3?3:{integer}
=== modified file 'src/diagnostics/pregenerated/dict_en.cpp'
--- src/diagnostics/pregenerated/dict_en.cpp 2013-05-04 21:54:40 +0000
+++ src/diagnostics/pregenerated/dict_en.cpp 2013-05-14 23:54:28 +0000
@@ -32,7 +32,7 @@
{ "FOAR0002", "numeric operation overflow/underflow${: 1}" },
{ "FOCA0001", "\"$1\": value too large for decimal" },
{ "FOCA0002", "$1" },
- { "FOCA0003", "\"$1\": value too large for integer" },
+ { "FOCA0003", "\"$1\": value${ of type 2} too large for $3?3:{integer}" },
{ "FOCA0005", "NaN supplied as float/double value" },
{ "FOCA0006", "\"$1\": string to be cast to decimal has too many digits of precision" },
{ "FOCH0001", "\"$1\": invalid code point" },
=== modified file 'src/functions/func_sequences_impl.cpp'
--- src/functions/func_sequences_impl.cpp 2013-03-24 20:40:03 +0000
+++ src/functions/func_sequences_impl.cpp 2013-05-14 23:54:28 +0000
@@ -79,7 +79,7 @@
pos = to_xs_long(ipos);
}
}
- catch (std::range_error&)
+ catch (std::exception const&)
{
return false;
}
@@ -601,7 +601,7 @@
pos = to_xs_long(ipos);
len = to_xs_long(ilen);
}
- catch (std::range_error&)
+ catch (std::range_error const&)
{
goto done;
}
@@ -791,7 +791,7 @@
{
store::Item* posItem = static_cast(posExpr)->get_val();
- xs_integer pos = posItem->getIntegerValue();;
+ xs_integer pos( posItem->getIntegerValue() );
if (inputExpr->get_expr_kind() == relpath_expr_kind)
{
@@ -799,14 +799,14 @@
csize numSteps = pathExpr->numSteps();
- if (pos > Integer(0) && numSteps == 2)
+ if (pos.sign() > 0 && numSteps == 2)
{
xs_long pos2;
try
{
pos2 = posItem->getLongValue();
}
- catch (std::range_error&)
+ catch (std::range_error const&)
{
goto done;
}
=== modified file 'src/types/casting.cpp'
--- src/types/casting.cpp 2013-05-09 00:21:51 +0000
+++ src/types/casting.cpp 2013-05-14 23:54:28 +0000
@@ -148,6 +148,45 @@
}
+void throwFOCA0003Exception(const zstring& str, const ErrorInfo& info)
+{
+ if (info.theSourceType)
+ {
+ throw XQUERY_EXCEPTION(
+ err::FOCA0003,
+ ERROR_PARAMS(
+ str,
+ info.theSourceType->toSchemaString(),
+ info.theTargetType->toSchemaString()
+ ),
+ ERROR_LOC( info.theLoc )
+ );
+ }
+ else
+ {
+ TypeManager& tm = GENV_TYPESYSTEM;
+
+ xqtref_t sourceType =
+ tm.create_builtin_atomic_type(info.theSourceTypeCode,
+ TypeConstants::QUANT_ONE);
+
+ xqtref_t targetType =
+ tm.create_builtin_atomic_type(info.theTargetTypeCode,
+ TypeConstants::QUANT_ONE);
+
+ throw XQUERY_EXCEPTION(
+ err::FOCA0003,
+ ERROR_PARAMS(
+ str,
+ sourceType->toSchemaString(),
+ targetType->toSchemaString()
+ ),
+ ERROR_LOC( info.theLoc )
+ );
+ }
+}
+
+
void throwFORG0001Exception(const zstring& str, const ErrorInfo& info)
{
if (info.theTargetType)
@@ -375,14 +414,14 @@
{
try
{
- const xs_nonNegativeInteger n(strval.c_str());
+ xs_nonNegativeInteger const n(strval.c_str());
aFactory->createNonNegativeInteger(result, n);
}
- catch (const std::invalid_argument& )
+ catch ( std::invalid_argument const& )
{
throwFORG0001Exception(strval, errInfo);
}
- catch (const std::range_error& )
+ catch ( std::range_error const& )
{
RAISE_ERROR(err::FOAR0002, errInfo.theLoc, ERROR_PARAMS(strval));
}
@@ -954,13 +993,17 @@
T1_TO_T2(flt, int)
{
+ xs_float const f( aItem->getFloatValue() );
+ if ( !f.isFinite() )
+ throwFOCA0002Exception(aItem->getStringValue(), errInfo);
try
{
- aFactory->createInteger(result, xs_integer(aItem->getFloatValue()));
+ xs_integer const n( f );
+ aFactory->createInteger(result, n);
}
catch (const std::exception&)
{
- throwFOCA0002Exception(aItem->getStringValue(), errInfo);
+ throwFOCA0003Exception(aItem->getStringValue(), errInfo);
}
}
@@ -1007,13 +1050,17 @@
T1_TO_T2(dbl, int)
{
+ xs_double const d( aItem->getDoubleValue() );
+ if ( !d.isFinite() )
+ throwFOCA0002Exception(aItem->getStringValue(), errInfo);
try
{
- aFactory->createInteger(result, xs_integer(aItem->getDoubleValue()));
+ xs_integer const n( d );
+ aFactory->createInteger(result, n);
}
catch (const std::exception& )
{
- throwFOCA0002Exception(aItem->getStringValue(), errInfo);
+ throwFOCA0003Exception(aItem->getStringValue(), errInfo);
}
}
=== modified file 'src/zorbatypes/decimal.cpp'
--- src/zorbatypes/decimal.cpp 2013-05-09 00:21:51 +0000
+++ src/zorbatypes/decimal.cpp 2013-05-14 23:54:28 +0000
@@ -27,6 +27,8 @@
#include "integer.h"
#include "numconversions.h"
+using namespace std;
+
namespace zorba {
///////////////////////////////////////////////////////////////////////////////
@@ -35,7 +37,7 @@
void Decimal::parse( char const *s, value_type *result, int parse_options ) {
if ( !*s )
- throw std::invalid_argument( "empty string" );
+ throw invalid_argument( "empty string" );
s = ascii::trim_start_space( s );
char const *const first_non_ws = s;
@@ -58,13 +60,11 @@
++s;
}
if ( *s )
- throw std::invalid_argument(
- BUILD_STRING( '"', *s, "\": invalid character" )
- );
+ throw invalid_argument( BUILD_STRING( '"', *s, "\": invalid character" ) );
if ( first_trailing_ws ) {
ptrdiff_t const size = first_trailing_ws - first_non_ws;
- char *const copy = std::strncpy( new char[ size + 1 ], first_non_ws, size );
+ char *const copy = ::strncpy( new char[ size + 1 ], first_non_ws, size );
copy[ size ] = '\0';
*result = copy;
delete[] copy;
@@ -73,98 +73,66 @@
}
/**
- * Remove trailing .99999 or .000001.
- * Find four or five consecutive 9 or 0 after decimal point and eliminate them.
+ * Rounds .xxx9999xxx or .xxx000000xxx.
*/
void Decimal::reduce( char *s ) {
- char *dot = strrchr( s, '.' );
- if ( !dot ) // not a floating point number
+ char *const dot = ::strrchr( s, '.' );
+ if ( !dot ) // not a floating-point number
return;
bool has_e = false;
- char *e = strrchr( s, 'E' );
- if ( !e )
- e = strrchr( s, 'e' );
- if ( !e )
- e = s + strlen( s );
+ char *e = ::strpbrk( s, "eE" );
+ if ( !e )
+ e = s + ::strlen( s ); // eliminates a special-case
else
has_e = true;
-
- char *digits = e - 1;
- for ( int pos = (int)(digits - dot); pos > 8; --pos, --digits ) {
- if ( *digits == '9' ) {
- if ( digits[-1] == '9' && digits[-2] == '9' && digits[-3] == '9' ) {
- if ( ascii::is_digit( digits[1] ) && digits[1] >= '5' )
- digits -= 4;
- else if ( digits[-4] == '9' )
- digits -= 5;
- else
- continue;
-
- // now add 1 to remaining digits
- char *last_digit = digits;
- while ( digits >= s ) {
- if ( digits[0] == '.' ) {
- // skip
- } else if ( digits[0] == '9' ) {
- digits[0] = '0';
- if ( last_digit == digits )
- --last_digit;
- } else {
- if ( ascii::is_digit( digits[0] ) )
- digits[0]++;
- break;
- }
- --digits;
- }
- if ( last_digit[0] != '.' )
- ++last_digit;
- else if ( has_e ) {
- last_digit[1] = '0';
- last_digit += 2;
- }
- if ( digits < s || !ascii::is_digit( digits[0] ) ) {
- memmove( s + 1, s, last_digit - s );
- ++last_digit;
- if ( ascii::is_digit( s[0] ) )
- s[0] = '1';
- else
- s[1] = '1';
- if ( has_e ) { // increment the exponent
- ++dot;
- dot[0] = dot[-1];
- dot[-1] = '.';
- sprintf( e + 1, "%d", atoi( e + 1 ) + 1 );
- --last_digit;
- }
- }
- int const e_len = strlen( e );
- memmove( last_digit, e, e_len );
- last_digit[ e_len ] = 0;
- break;
- }
- } else if ( *digits == '0' ) {
- if ( digits[-1] == '0' && digits[-2] == '0' && digits[-3] == '0' ) {
- if ( ascii::is_digit( digits[1] ) && digits[1] < '5' )
- digits -= 4;
- else if ( digits[-4] == '0' )
- digits -= 5;
- else
- continue;
- while ( *digits == '0' )
- --digits;
- if ( *digits != '.' )
- ++digits;
- else if ( has_e ) {
- digits[1] = '0';
- digits += 2;
- }
- int const e_len = strlen( e );
- memmove( digits, e, e_len );
- digits[ e_len ] = '\0';
- break;
- }
- }
+ char *digit = e - 1;
+
+ if ( ::strncmp( dot + 1, "9999", 3 ) == 0 ) {
+ // The "leading nines" case, e.g., 12.9999[34][E56]
+ if ( has_e ) {
+ ::memmove( dot + 2, e, strlen( e ) + 1 );
+ dot[1] = '0';
+ } else
+ ::memmove( dot, e, strlen( e ) + 1 );
+ digit = dot - 1;
+ char const *const first = *s == '-' ? s + 1 : s;
+ while ( true ) {
+ if ( *digit == '9' ) {
+ *digit = '0';
+ if ( digit == first ) {
+ // slide to the right to insert a leading '1'
+ ::memmove( digit + 1, digit, strlen( digit ) + 1 );
+ *digit = '1';
+ break;
+ }
+ --digit;
+ } else {
+ ++digit[0]; // e.g., 12 => 13
+ break;
+ }
+ }
+ return;
+ }
+
+ if ( char *const nines = ::strstr( dot + 1, "9999" ) ) {
+ // The "in-the-middle nines" case, e.g., 12.349999[56][E78]
+ ++nines[-1]; // e.g., .xxx19 => .xxx29
+ ::memmove( nines, e, strlen( e ) + 1 );
+ return;
+ }
+
+ if ( char *zeros = ::strstr( dot + 1, "000000" ) ) {
+ // The "zeros" case, e.g., 12.0000003, 12.340000005.
+ if ( zeros == dot + 1 && has_e )
+ ++zeros; // leave one 0 after . and before E
+ ::memmove( zeros, e, strlen( e ) + 1 );
+ if ( !has_e ) {
+ char *const last = s + ::strlen( s ) - 1;
+ if ( *last == '.' )
+ *last = '\0';
+ }
+ return;
}
}
@@ -189,7 +157,7 @@
if ( f != f ||
f == std::numeric_limits::infinity() ||
f == -std::numeric_limits::infinity() )
- throw std::invalid_argument( "float value = infinity" );
+ throw invalid_argument( "float value = infinity" );
value_ = f;
}
@@ -197,19 +165,19 @@
if ( d != d ||
d == std::numeric_limits::infinity() ||
d == -std::numeric_limits::infinity() )
- throw std::invalid_argument( "double value = infinity" );
+ throw invalid_argument( "double value = infinity" );
value_ = d;
}
Decimal::Decimal( Double const &d ) {
if ( !d.isFinite() )
- throw std::invalid_argument( "double value = infinity" );
+ throw invalid_argument( "double value = infinity" );
value_ = d.getNumber();
}
Decimal::Decimal( Float const &f ) {
if ( !f.isFinite() )
- throw std::invalid_argument( "float value = infinity" );
+ throw invalid_argument( "float value = infinity" );
value_ = f.getNumber();
}
@@ -252,14 +220,14 @@
Decimal& Decimal::operator=( Double const &d ) {
if ( !d.isFinite() )
- throw std::invalid_argument( "not finite" );
+ throw invalid_argument( "not finite" );
value_ = d.getNumber();
return *this;
}
Decimal& Decimal::operator=( Float const &f ) {
if ( !f.isFinite() )
- throw std::invalid_argument( "not finite" );
+ throw invalid_argument( "not finite" );
value_ = f.getNumber();
return *this;
}
@@ -389,7 +357,7 @@
if ( value >= MAPM::getMinInt64() ) {
// hash it as int64
value.toIntegerString( bufp );
- std::stringstream ss( bufp );
+ stringstream ss( bufp );
int64_t n;
ss >> n;
assert( ss.eof() );
@@ -400,7 +368,7 @@
} else if ( value <= MAPM::getMaxUInt64() ) {
// hash it as uint64
value.toIntegerString( bufp );
- std::stringstream ss( bufp );
+ stringstream ss( bufp );
uint64_t n;
ss >> n;
assert( ss.eof() );
@@ -411,7 +379,7 @@
// In all other cases, hash it as double
value.toFixPtString( bufp, ZORBA_FLOAT_POINT_PRECISION );
- std::stringstream ss( bufp );
+ stringstream ss( bufp );
double n;
ss >> n;
assert( ss.eof() );
@@ -422,7 +390,7 @@
zstring Decimal::toString( value_type const &value, bool minusZero,
int precision ) {
- char buf[ 1024 ];
+ char buf[ 2048 ];
if ( minusZero ) {
if ( value.sign() == 0 )
@@ -440,10 +408,9 @@
//
if ( strchr( buf, '.' ) != 0 ) {
// remove trailing 0's
- char *last = buf + strlen( buf ) - 1;
- while ( *last == '0' && last > buf )
- *last-- = '\0';
-
+ char *last = buf + strlen( buf );
+ while ( *--last == '0' )
+ *last = '\0';
if ( *last == '.' ) // remove '.' if no digits after it
*last = '\0';
}
=== modified file 'src/zorbatypes/floatimpl.cpp'
--- src/zorbatypes/floatimpl.cpp 2013-05-09 00:21:51 +0000
+++ src/zorbatypes/floatimpl.cpp 2013-05-14 23:54:28 +0000
@@ -130,7 +130,7 @@
} else if ( strncmp( s, "NaN", 3 ) == 0 ) {
value_ = FloatImpl::nan().value_;
s += 3;
- } else if ( strncmp( s, "+INF", 4 ) == 0 ) {
+ } else if ( strncmp( s, "+INF", 4 ) == 0 ) { // allowed by XSD 1.1
value_ = FloatImpl::pos_inf().value_;
s += 4;
} else
@@ -351,11 +351,7 @@
return "0";
if ( isNegZero() )
return "-0";
-
- // TODO: make xs_int
- char buf[174];
- sprintf( buf, "%d", (int)value_ );
- return buf;
+ return ztd::to_string( static_cast( value_ ) );
}
template
@@ -379,9 +375,9 @@
#if 1
// This is the "spec" implementation, i.e., it is an exact application of
// the spec in http://www.w3.org/TR/xpath-functions/#casting
- MAPM decimal_mapm( value_ );
- decimal_mapm = decimal_mapm.round( precision_ );
- return Decimal::toString( decimal_mapm, isNegZero(), max_precision() );
+ MAPM temp( value_ );
+ temp = temp.round( precision_ );
+ return Decimal::toString( temp, isNegZero(), max_precision() );
#else
std::stringstream stream;
stream.precision(7);
@@ -410,42 +406,37 @@
return result;
#endif
} else {
- char format[15];
- sprintf( format, "%%#1.%dE", static_cast( precision_ ) );
-
char buf[174];
- sprintf( buf, format, static_cast( value_ ) );
-
- char *e = strchr( buf, 'E' );
- char *zeros = e ? e - 1 : buf + strlen( buf ) - 1;
-
- while ( *zeros == '0' )
- --zeros;
-
- if ( e ) {
- if ( *zeros == '.' )
- ++zeros;
-
- zeros[1] = 'E';
+ sprintf( buf, "%#1.*E", (int)precision_, (double)value_ );
+ char *e = ::strchr( buf, 'E' );
+
+ //
+ // Clean-up, part 1: remove trailing zeros from mantissa
+ // e.g.: xx.xx12300Exx => xx.xx123Exx
+ //
+ char *zero = e - 1;
+ while ( *zero == '0' && zero[-1] != '.' )
+ --zero;
+ if ( zero < e - 1 )
+ ::memmove( zero + 1, e, strlen( e ) + 1 );
+
+ //
+ // Clean-up, part 2: remove '+' and leading '0' from exponent
+ // e.g: 1E+xx => 1Exx, 1E-0x => 1E-x
+ //
+ e = ::strchr( buf, 'E' );
+ char *dest = ++e;
+ switch ( *e ) {
+ case '-':
+ ++dest;
+ // no break;
+ case '+':
+ ++e;
+ }
+ if ( *e == '0' )
++e;
-
- if ( *e == '+' )
- ++e;
- else if ( *e == '-' ) {
- ++zeros;
- zeros[1] = '-';
- ++e;
- }
-
- while ( *e == '0' )
- ++e;
-
- memmove( (void*)(zeros + 2), e, strlen( e ) + 1 );
- } else {
- if ( *zeros == '.' )
- --zeros;
- zeros[1] = '\0';
- }
+ if ( dest < e )
+ ::memmove( dest, e, strlen( e ) + 1 );
Decimal::reduce( buf );
return buf;
=== modified file 'src/zorbatypes/integer.cpp'
--- src/zorbatypes/integer.cpp 2013-05-07 00:39:46 +0000
+++ src/zorbatypes/integer.cpp 2013-05-14 23:54:28 +0000
@@ -19,7 +19,6 @@
// standard
#include
#include
-#include
// Zorba
#include
@@ -38,12 +37,6 @@
///////////////////////////////////////////////////////////////////////////////
-ostream& operator<<( ostream &o, MAPM const &m ) {
- unique_ptr const buf( new char[ m.exponent() + 3 ] );
- m.toIntegerString( buf.get() );
- return o << buf.get();
-}
-
void integer_traits::throw_error( string const &what, bool throw_range_error ) {
if ( throw_range_error )
throw range_error( what );
@@ -52,27 +45,32 @@
void integer_traits::throw_error( MAPM const &n, char const *op,
bool throw_range_error ) {
- ostringstream oss;
- oss << n;
- string const what( BUILD_STRING( oss.str(), ": not ", op, " 0" ) );
+ unique_ptr const buf( new char[ n.exponent() + 3 ] );
+ n.toIntegerString( buf.get() );
+ string const what( BUILD_STRING( buf.get(), ": not ", op, " 0" ) );
throw_error( what, throw_range_error );
}
///////////////////////////////////////////////////////////////////////////////
+#ifndef ZORBA_WITH_BIG_INTEGER
+template
+typename IntegerImpl::value_type IntegerImpl::ftoi( double d ) {
+ value_type const v( d >= 0 ? floor( d ) : ceil( d ) );
+ if ( v < 0 && d > 0 )
+ throw range_error(
+ BUILD_STRING( '"', d, "\": value too large for integer" )
+ );
+ return v;
+}
+#endif /* ZORBA_WITH_BIG_INTEGER */
+
template
void IntegerImpl::parse( char const *s, bool throw_range_error ) {
#ifdef ZORBA_WITH_BIG_INTEGER
Decimal::parse( s, &value_, Decimal::parse_integer );
#else
- try {
- value_ = ztd::aton( s );
- }
- catch ( std::range_error const &e ) {
- if ( throw_range_error )
- throw;
- throw invalid_argument( e.what() );
- }
+ value_ = ztd::aton( s );
#endif /* ZORBA_WITH_BIG_INTEGER */
T::check_value( value_, throw_range_error );
}
=== modified file 'src/zorbatypes/integer.h'
--- src/zorbatypes/integer.h 2013-05-07 00:39:46 +0000
+++ src/zorbatypes/integer.h 2013-05-14 23:54:28 +0000
@@ -50,8 +50,6 @@
///////////////////////////////////////////////////////////////////////////////
-std::ostream& operator<<( std::ostream&, MAPM const& );
-
struct integer_traits {
static int const default_value = 0;
@@ -138,6 +136,8 @@
}
};
+///////////////////////////////////////////////////////////////////////////////
+
template
class IntegerImpl {
public:
@@ -199,6 +199,8 @@
*
* @tparam TraitsType2 The traits type of \a i.
* @param i The %IntegerImpl to copy from.
+ * @throw std::invalid_argument if \a i contains a value that is invalid for
+ * this type of integer.
*/
template
IntegerImpl( IntegerImpl const &i );
@@ -212,6 +214,8 @@
* @tparam TraitsType2 The traits type of \a i.
* @param i The %IntegerImpl to assign from.
* @return Returns \c *this.
+ * @throw std::invalid_argument if \a i contains a value that is invalid for
+ * this type of integer.
*/
template
IntegerImpl& operator=( IntegerImpl const &i );
@@ -552,13 +556,13 @@
value_type value_;
+#ifdef ZORBA_WITH_BIG_INTEGER
+ IntegerImpl( value_type const &v ) : value_( v ) { }
+
static value_type ftoi( double d ) {
return value_type( d >= 0 ? floor( d ) : ceil( d ) );
}
-#ifdef ZORBA_WITH_BIG_INTEGER
- IntegerImpl( value_type const &v ) : value_( v ) { }
-
static value_type ftoi( MAPM const &d ) {
return d.sign() >= 0 ? d.floor() : d.ceil();
}
@@ -573,6 +577,8 @@
}
#else /* ZORBA_WITH_BIG_INTEGER */
+ static value_type ftoi( double d );
+
static value_type ftoi( value_type v ) {
return v; // intentional no-op
}
=== modified file 'test/fots/CMakeLists.txt'
--- test/fots/CMakeLists.txt 2013-05-08 20:14:47 +0000
+++ test/fots/CMakeLists.txt 2013-05-14 23:54:28 +0000
@@ -157,8 +157,6 @@
EXPECTED_FOTS_FAILURE (fn-available-environment-variables fn-available-environment-variables-011 0)
EXPECTED_FOTS_FAILURE (fn-deep-equal K2-SeqDeepEqualFunc-36 0)
EXPECTED_FOTS_FAILURE (fn-deep-equal K2-SeqDeepEqualFunc-37 0)
-EXPECTED_FOTS_FAILURE (fn-distinct-values cbcl-distinct-values-002 1090089)
-EXPECTED_FOTS_FAILURE (fn-distinct-values cbcl-distinct-values-002b 1090089)
EXPECTED_FOTS_FAILURE (fn-environment-variable environment-variable-005 0)
EXPECTED_FOTS_FAILURE (fn-environment-variable environment-variable-006 0)
EXPECTED_FOTS_FAILURE (fn-environment-variable environment-variable-007 0)
=== added file 'test/rbkt/ExpQueryResults/zorba/numerics/xs_float-01.xml.res'
--- test/rbkt/ExpQueryResults/zorba/numerics/xs_float-01.xml.res 1970-01-01 00:00:00 +0000
+++ test/rbkt/ExpQueryResults/zorba/numerics/xs_float-01.xml.res 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+1.899
=== added file 'test/rbkt/ExpQueryResults/zorba/numerics/xs_float-02.xml.res'
--- test/rbkt/ExpQueryResults/zorba/numerics/xs_float-02.xml.res 1970-01-01 00:00:00 +0000
+++ test/rbkt/ExpQueryResults/zorba/numerics/xs_float-02.xml.res 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+2
=== added file 'test/rbkt/ExpQueryResults/zorba/numerics/xs_float-03.xml.res'
--- test/rbkt/ExpQueryResults/zorba/numerics/xs_float-03.xml.res 1970-01-01 00:00:00 +0000
+++ test/rbkt/ExpQueryResults/zorba/numerics/xs_float-03.xml.res 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+1.6
=== added file 'test/rbkt/ExpQueryResults/zorba/numerics/xs_float-04.xml.res'
--- test/rbkt/ExpQueryResults/zorba/numerics/xs_float-04.xml.res 1970-01-01 00:00:00 +0000
+++ test/rbkt/ExpQueryResults/zorba/numerics/xs_float-04.xml.res 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+10
=== added file 'test/rbkt/ExpQueryResults/zorba/numerics/xs_float-05.xml.res'
--- test/rbkt/ExpQueryResults/zorba/numerics/xs_float-05.xml.res 1970-01-01 00:00:00 +0000
+++ test/rbkt/ExpQueryResults/zorba/numerics/xs_float-05.xml.res 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+-1.9
=== added file 'test/rbkt/ExpQueryResults/zorba/numerics/xs_float-06.xml.res'
--- test/rbkt/ExpQueryResults/zorba/numerics/xs_float-06.xml.res 1970-01-01 00:00:00 +0000
+++ test/rbkt/ExpQueryResults/zorba/numerics/xs_float-06.xml.res 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+-2
=== added file 'test/rbkt/ExpQueryResults/zorba/numerics/xs_float-07.xml.res'
--- test/rbkt/ExpQueryResults/zorba/numerics/xs_float-07.xml.res 1970-01-01 00:00:00 +0000
+++ test/rbkt/ExpQueryResults/zorba/numerics/xs_float-07.xml.res 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+-1.6
=== added file 'test/rbkt/ExpQueryResults/zorba/numerics/xs_float-08.xml.res'
--- test/rbkt/ExpQueryResults/zorba/numerics/xs_float-08.xml.res 1970-01-01 00:00:00 +0000
+++ test/rbkt/ExpQueryResults/zorba/numerics/xs_float-08.xml.res 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+-10
=== added file 'test/rbkt/ExpQueryResults/zorba/numerics/xs_float-09.xml.res'
--- test/rbkt/ExpQueryResults/zorba/numerics/xs_float-09.xml.res 1970-01-01 00:00:00 +0000
+++ test/rbkt/ExpQueryResults/zorba/numerics/xs_float-09.xml.res 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+1
=== added file 'test/rbkt/ExpQueryResults/zorba/numerics/xs_float-10.xml.res'
--- test/rbkt/ExpQueryResults/zorba/numerics/xs_float-10.xml.res 1970-01-01 00:00:00 +0000
+++ test/rbkt/ExpQueryResults/zorba/numerics/xs_float-10.xml.res 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+1
=== added file 'test/rbkt/ExpQueryResults/zorba/numerics/xs_float-11.xml.res'
--- test/rbkt/ExpQueryResults/zorba/numerics/xs_float-11.xml.res 1970-01-01 00:00:00 +0000
+++ test/rbkt/ExpQueryResults/zorba/numerics/xs_float-11.xml.res 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+1.234
=== added file 'test/rbkt/ExpQueryResults/zorba/numerics/xs_float-12.xml.res'
--- test/rbkt/ExpQueryResults/zorba/numerics/xs_float-12.xml.res 1970-01-01 00:00:00 +0000
+++ test/rbkt/ExpQueryResults/zorba/numerics/xs_float-12.xml.res 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+1.9
=== added file 'test/rbkt/Queries/zorba/numerics/xs_float-01.xq'
--- test/rbkt/Queries/zorba/numerics/xs_float-01.xq 1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/numerics/xs_float-01.xq 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+xs:float(1.899)
=== added file 'test/rbkt/Queries/zorba/numerics/xs_float-02.xq'
--- test/rbkt/Queries/zorba/numerics/xs_float-02.xq 1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/numerics/xs_float-02.xq 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+xs:float(1.999)
=== added file 'test/rbkt/Queries/zorba/numerics/xs_float-03.xq'
--- test/rbkt/Queries/zorba/numerics/xs_float-03.xq 1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/numerics/xs_float-03.xq 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+xs:float(1.59999)
=== added file 'test/rbkt/Queries/zorba/numerics/xs_float-04.xq'
--- test/rbkt/Queries/zorba/numerics/xs_float-04.xq 1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/numerics/xs_float-04.xq 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+xs:float(9.999)
=== added file 'test/rbkt/Queries/zorba/numerics/xs_float-05.xq'
--- test/rbkt/Queries/zorba/numerics/xs_float-05.xq 1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/numerics/xs_float-05.xq 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+xs:float(-1.89999)
=== added file 'test/rbkt/Queries/zorba/numerics/xs_float-06.xq'
--- test/rbkt/Queries/zorba/numerics/xs_float-06.xq 1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/numerics/xs_float-06.xq 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+xs:float(-1.999)
=== added file 'test/rbkt/Queries/zorba/numerics/xs_float-07.xq'
--- test/rbkt/Queries/zorba/numerics/xs_float-07.xq 1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/numerics/xs_float-07.xq 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+xs:float(-1.59999)
=== added file 'test/rbkt/Queries/zorba/numerics/xs_float-08.xq'
--- test/rbkt/Queries/zorba/numerics/xs_float-08.xq 1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/numerics/xs_float-08.xq 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+xs:float(-9.999)
=== added file 'test/rbkt/Queries/zorba/numerics/xs_float-09.xq'
--- test/rbkt/Queries/zorba/numerics/xs_float-09.xq 1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/numerics/xs_float-09.xq 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+xs:float(1.0000001)
=== added file 'test/rbkt/Queries/zorba/numerics/xs_float-10.xq'
--- test/rbkt/Queries/zorba/numerics/xs_float-10.xq 1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/numerics/xs_float-10.xq 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+xs:float(1.00000001)
=== added file 'test/rbkt/Queries/zorba/numerics/xs_float-11.xq'
--- test/rbkt/Queries/zorba/numerics/xs_float-11.xq 1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/numerics/xs_float-11.xq 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+xs:float(1.234000001)
=== added file 'test/rbkt/Queries/zorba/numerics/xs_float-12.xq'
--- test/rbkt/Queries/zorba/numerics/xs_float-12.xq 1970-01-01 00:00:00 +0000
+++ test/rbkt/Queries/zorba/numerics/xs_float-12.xq 2013-05-14 23:54:28 +0000
@@ -0,0 +1,1 @@
+xs:float(1.89999123)