On Wed, 08 May 2013 12:59:08 +0200, M.-A. Lemburg <m...@egenix.com> wrote:
On 08.05.2013 11:48, Vernon D. Cole wrote:
I am working on code (django-mssql) where I found the following test:
## expected = (
## Decimal('0.00'),
## Decimal('0.0'),
## Decimal('-0.00'))
##
## cur = con.cursor()
## cur.paramstyle = 'format' # a nonstandard extension -- VDC
## cur.execute("SELECT %s as A, %s as B, %s as C", expected)
##
## result = cur.fetchall()
## self.assertEqual(result[0], expected)
I added the paramstyle alteration, to match the original test's assumption
-- that is not what I am asking about. My question is: is this test
reasonable on it's face?
I personally think that all values of zero are equal, and the user should
have no expectation that neqative zero, or an accurately precise zero,
should be returned. My present code returns three copies of Decimal(0).
But someone must disagree, or this test would not have been written.
What is the feeling of the group?
It's possible that the DB module passes decimals as
strings to the database and the database could treat them
differently in the resp. string form (e.g. raise an error
in case the precision doesn't match).
The test will pass either way, since all values compare
equal.
To reiterate MA's reply.
It is DBMS/driver dependent on how these values are treated (and
sent/retrieved to/from the DBMS). Most servers will thunk it down to a
plain zero but you can't predict what each vendor does.
In python those are _different_ but as per MA's comment they compare the
same:
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit
(Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from decimal import Decimal
>>> Decimal('0.00') == Decimal('0.0') == Decimal('-0.00')
True
>>> Decimal('0.00')
Decimal('0.00')
>>> Decimal('0.0')
Decimal('0.0')
>>> Decimal('-0.00')
Decimal('-0.00')
I personally have a bunch of similar tests to make sure the "different"
values are handled correctly.
Chris
_______________________________________________
DB-SIG maillist - DB-SIG@python.org
http://mail.python.org/mailman/listinfo/db-sig