U a@sddlZddlZddlZddlZddlmZddlmZddlmZddlmZddl m Z ddl m Z dd lm Z dd l mZdd l mZd d lmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlm Z d dlm!Z!d dlm"Z"d d lm#Z#d d!lm$Z$d d"lm%Z%d d#lm&Z&d d$lm'Z'd d%lm(Z(d d&l)m*Z*d d'l+m,Z,d d(l(m-Z-Gd)d*d*e.Z/Gd+d,d,e/ej0Z1Gd-d.d.e1ej2Z3Gd/d0d0e1ej2Z4Gd1d2d2e/ej2Z5Gd3d4d4e/ej0Z6Gd5d6d6e/ej0Z7Gd7d8d8e7ej2Z8Gd9d:d:e7ej2Z9Gd;d<dd>e7ej2Z;Gd?d@d@e7ej2ZGdEdFdFe7ej2Z?GdGdHdHe7ej2Z@GdIdJdJe/ej0ZAGdKdLdLe/ej0ZBGdMdNdNe/ej0ZCGdOdPdPe/ej2ZDGdQdRdRe/ej2ZEGdSdTdTe/ej2ZFdUZGdS)VN)config)engines)fixtures)mock)eq_)is_) requirements)Column)Table)and_ BigInteger) bindparamBoolean)case)cast)Date)DateTime)FloatInteger)JSON)literal)MetaData)nullNumeric)selectString)testingText)Time) TIMESTAMP TypeDecorator)Unicode) UnicodeText)util)declarative_base)Session)uc@seZdZdZejddZdS)_LiteralRoundTripFixtureTcsdfdd }|S)ztest literal renderingNc stdtd|}||D]8}|jt||djtjj t ddd} |q j r|| |jjt|k}n| }|jtjj t ddd} |D](}|d}|dk r||}||kstqdS)Ntxr2T) literal_binds)dialectcompile_kwargsr)r r createinsertvaluesrcompiler#dbr5dictexecutesupports_whereclauser wherecr2AssertionError) type_input_outputfilter_r1valueZinsstmtrow connectionmetadataselfdC:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-nyjtotrf\sqlalchemy\testing\suite\test_types.pyrun;s.  z8_LiteralRoundTripFixture.literal_round_trip..run)NrMrLrKrJrOrMrIrNliteral_round_trip2s z+_LiteralRoundTripFixture.literal_round_tripN)__name__ __module__ __qualname__r>r#fixturerQrMrMrMrNr0/sr0c@s`eZdZdZedZeddZeddZ ddZ d d Z d d Z d dZ ddZddZdS)_UnicodeFixture unicode_datauAlors vous imaginez ma 🐍 surprise, au lever du jour, quand une drôle de petite 🐍 voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi 🐍 un mouton! »cCs tjjjSNrr Z"expressions_against_unbounded_textZenabledrLrMrMrNr>esz$_UnicodeFixture.supports_whereclausec Cs&td|tdtdddtd|jdS)N unicode_tableidT primary_keyZtest_needs_autoincrementrX)r r rdatatypeclsrKrMrMrN define_tablesis z_UnicodeFixture.define_tablescCs\|jj}||d|jd|t|jj}t ||jft |dt j sXt dS)Nr]rXr)tablesr\r=r8datar r@rXfirstr isinstancer, text_typerArLrJr\rHrMrMrNtest_round_tripts z_UnicodeFixture.test_round_tripcsjj}||fddtddD|t|jj}t |fddtddD|D]}t |dt j sdt qddS)Ncsg|]}|jdqS)rerg.0ir[rMrN sz?_UnicodeFixture.test_round_trip_executemany..rdcsg|] }jfqSrMrmrnr[rMrNrqsr)rfr\r=r8ranger r@rXZfetchallrrir,rjrA)rLrJr\rowsrHrMr[rNtest_round_trip_executemanys z+_UnicodeFixture.test_round_trip_executemanycCsB|jj}||ddd|t|jj}t|ddS)NrdrerY) rfr\r=r8r r@rXrhrrkrMrMrN_test_null_stringssz"_UnicodeFixture._test_null_stringscCsL|jj}||dtdd|t|jj}t |tdfdS)Nrdre) rfr\r=r8r/r r@rXrhrrkrMrMrN_test_empty_stringss z#_UnicodeFixture._test_empty_stringscCs||j|jg|jgdSrY)r`rgrLrQrMrMrN test_literalsz_UnicodeFixture.test_literalcCs"||jtdgtdgdSNréve🐍 illé)r`r,r/ryrMrMrNtest_literal_non_asciis  z&_UnicodeFixture.test_literal_non_asciiN)rRrSrT __requires__r/rgpropertyr> classmethodrcrlrurvrxrzr}rMrMrMrNrV\s     rVc@s2eZdZdZdZedZejddZ ddZ dS) UnicodeVarcharTestrWTcCs||dSrYrxrLrJrMrMrNtest_empty_strings_varcharsz-UnicodeVarcharTest.test_empty_strings_varcharcCs||dSrYrvrrMrMrNtest_null_strings_varcharsz,UnicodeVarcharTest.test_null_strings_varcharN) rRrSrTr~ __backend__r*r`r Zempty_strings_varcharrrrMrMrMrNrs  rc@s0eZdZdZdZeZejddZ ddZ dS)UnicodeTextTest)rXrjTcCs||dSrYrrrMrMrNtest_empty_strings_textsz'UnicodeTextTest.test_empty_strings_textcCs||dSrYrrrMrMrNtest_null_strings_textsz&UnicodeTextTest.test_null_strings_textN) rRrSrTr~rr+r`r empty_strings_textrrrMrMrMrNrs  rc@steZdZdZdZeddZeddZddZ e j j d d Z d d Zd dZddZddZddZddZdS)TextTest)rjTcCs tjjjSrYrZr[rMrMrNr>szTextTest.supports_whereclausec Cs$td|tdtdddtdtdS)N text_tabler]Tr^ text_data)r r rr%rarMrMrNrcszTextTest.define_tablescCsB|jj}||ddd|t|jj}t|ddS)Nrd some textr]r)r rfrr=r8r r@rrhrrLrJrrHrMrMrNtest_text_roundtripszTextTest.test_text_roundtripcCsB|jj}||ddd|t|jj}t|ddS)Nrdrwr)rwrrrMrMrNtest_text_empty_stringssz TextTest.test_text_empty_stringscCsB|jj}||ddd|t|jj}t|ddS)NrdrrYrrrMrMrNtest_text_null_stringsszTextTest.test_text_null_stringscCs|tdgdgdS)Nrr$ryrMrMrNrzszTextTest.test_literalcCs |ttdgtdgdSr{)r%r,r/ryrMrMrNr}s  zTextTest.test_literal_non_asciicCsd}|t|g|gdS)N&some 'text' hey "hi there" that's textr$rLrQrgrMrMrNtest_literal_quotingszTextTest.test_literal_quotingcCsd}|t|g|gdS)N$backslash one \ backslash two \\ endr$rrMrMrNtest_literal_backslashessz!TextTest.test_literal_backslashescCsd}|t|g|gdS)Nzpercent % signs %% percentr$rrMrMrNtest_literal_percentsignssz"TextTest.test_literal_percentsignsN)rRrSrTr~rrr>rrcrr#requiresrrrrzr}rrrrMrMrMrNrs    rc@s>eZdZdZejddZddZddZdd Z d d Z d S) StringTestTcCs4t}td|tdt}|tj|tjdS)Nfooone)rr r r"r7rr;Zdrop)rLrKrrMrMrNtest_nolength_string s zStringTest.test_nolength_stringcCs|tddgdgdS)N(rr!ryrMrMrNrzszStringTest.test_literalcCs$|tdtdgtdgdS)Nrr|)r"r,r/ryrMrMrNr}s  z!StringTest.test_literal_non_asciicCsd}|td|g|gdS)Nrrr!rrMrMrNrszStringTest.test_literal_quotingcCsd}|td|g|gdS)Nrrr!rrMrMrNrsz#StringTest.test_literal_backslashesN) rRrSrTrr Zunbounded_varcharrrzr}rrrMrMrMrNrs rc@sTeZdZdZeddZddZddZdd Ze j j d d Z e j j d d ZdS) _DateFixtureNc sBGfdddt}td|tdtdddtdjtd|dS) NcseZdZjZdZdS)z-_DateFixture.define_tables..DecoratedTN)rRrSrTr`implcache_okrMrbrMrN Decorated)sr date_tabler]Tr^ date_datadecorated_date_data)r)r r rr`)rbrKrrMrrNrc's z_DateFixture.define_tablescCsh|jj}||d|jd|t|jj}|j p@|j}t ||ft |dt |sdt dS)Nrdr]rr)rfrr=r8rgr r@rrhcomparerrityperArLrJrrHrrMrMrNrl7s   z_DateFixture.test_round_tripcCsh|jj}||d|jd|t|jj}|j p@|j}t ||ft |dt |sdt dS)Nrd)r]rr)rfrr=r8rgr r@rrhrrrirrArrMrMrNtest_round_trip_decoratedDs    z&_DateFixture.test_round_trip_decoratedcCsB|jj}||ddd|t|jj}t|ddS)NrdrrY) rfrr=r8r r@rrhr)rLrJrrHrMrMrN test_nullSsz_DateFixture.test_nullcCs$|jp |j}||j|jg|gdSrY)rrgr`)rLrQrrMrMrNrz[s z_DateFixture.test_literalc Cs|jj}tj}||d|jd}|jd}t |j j  t td|jddktd|jdf|j jd|j jk}||ddi}t|d|W5QRXdS)Nrdrrr)rB)Zelse_)rfrrr;beginr=r8rgZinserted_primary_keyr r@r]r?rrr`rrhr)rLrconnresultid_rGrHrMrMrNtest_null_bound_comparison`s&      z'_DateFixture.test_null_bound_comparison)rRrSrTrrrcrlrrr#rZdatetime_literalsrzZ!standalone_null_binds_whereclauserrMrMrMrNr$s   rc@s,eZdZdZdZeZeddddddZd S) DateTimeTest)datetimeT  9N rRrSrTr~rrr`rrgrMrMrMrNrzsrc @s.eZdZdZdZeZeddddddd Zd S) DateTimeMicrosecondsTest)Zdatetime_microsecondsTrrrrrrNrrMrMrMrNrsrc @s.eZdZdZdZeZeddddddd Zd S) TimestampMicrosecondsTest)Ztimestamp_microsecondsTrrrrrrrN) rRrSrTr~rr'r`rrgrMrMrMrNrsrc@s&eZdZdZdZeZedddZ dS)TimeTest)timeTrrrN rRrSrTr~rr&r`rrrgrMrMrMrNrsrc@s(eZdZdZdZeZeddddZ dS)TimeMicrosecondsTest)Ztime_microsecondsTrrrrNrrMrMrMrNrsrc@s&eZdZdZdZeZedddZ dS)DateTest)dateTrrrN rRrSrTr~rrr`rrrgrMrMrMrNrsrc@s:eZdZdZdZeZeddddddZe dddZ d S) DateTimeCoercedToDateTimeTest)rZdate_coerces_from_datetimeTrrrrrrN) rRrSrTr~rrr`rrgrrrMrMrMrNrs rc@s,eZdZdZdZeZeddddddZdS) DateTimeHistoricTest)Zdatetime_historicTi: r4#NrrMrMrMrNrsrc@s&eZdZdZdZeZedddZ dS)DateHistoricTest)Z date_historicTirrrdNrrMrMrMrNrsrc@s.eZdZdZddZddZejddZdS) IntegerTestTcCs|tdgdgdSNrryrMrMrNrzszIntegerTest.test_literalcCs|tddS)Nl'r)rLinteger_round_triprMrMrN test_huge_intszIntegerTest.test_huge_intcsfdd}|S)Nc stdtdtdddtd|}tj|d|dt|j j  }t ||ft jr~t|dtstnt|dttfstdS) NZ integer_tabler]Tr^ integer_datard)r]rr)r r rZ create_allrr;r=r8r r@rrhrr,py3kriintrAlong)r`rgZ int_tablerHrJrKrMrNrOs*  z+IntegerTest.integer_round_trip..runrMrPrMrrNrszIntegerTest.integer_round_tripN) rRrSrTrrzrr#rUrrMrMrMrNrs rc@s&eZdZdZejddZddZdS)CastTypeDecoratorTestTcCsGdddt}|S)Nc@s0eZdZedZdZddZddZddZd S) z8CastTypeDecoratorTest.string_as_int..StringAsInt2TcSs|jSrY)NUMBER)rLZdbapirMrMrNget_dbapi_typeszGCastTypeDecoratorTest.string_as_int..StringAsInt.get_dbapi_typecSs t|tSrY)rrrLcolrMrMrNcolumn_expressionszJCastTypeDecoratorTest.string_as_int..StringAsInt.column_expressioncSst|tdS)Nr)rr"rrMrMrNbind_expressionszHCastTypeDecoratorTest.string_as_int..StringAsInt.bind_expressionN) rRrSrTr"rrrrrrMrMrMrN StringAsInts rr()rLrrMrMrN string_as_ints z#CastTypeDecoratorTest.string_as_intcCs|}td|td|}||||dddDdd||D}t|dd d hd d|||jj d kD}t|d hdS) Nr1r2cSsg|] }d|iqSr3rMror2rMrMrNrqsz;CastTypeDecoratorTest.test_special_type..)rdrr cSsh|] }|dqSrrMrorHrMrMrN sz:CastTypeDecoratorTest.test_special_type..rdrr cSsh|] }|dqSrrMrrMrMrNrs) r r r7r=r8r rr?r@r2)rLrKrJrrBr1rrMrMrNtest_special_types z'CastTypeDecoratorTest.test_special_typeN)rRrSrTrr#rUrrrMrMrMrNrs rc@s&eZdZdZejddZedddZedddZ d d Z ej j d d Z d dZddZej jddZej jddZej jddZddZddZej jedddZedddZej jdd Zej jd!d"Zej jd#d$Zej jd%d&Z ej j!d'd(Z"d)S)* NumericTestTcstddfdd }|S)N/.*does \*not\* support Decimal objects nativelyFcstdtd|}||dd|Ddd|D}t|}rtfdd|D}tfd d|D}t|||rtd d|Dd d|DdS) Nr1r2cSsg|] }d|iqSr3rMrrMrMrNrqsz.run..cSsh|] }|dqSrrMrrMrMrNrsz;NumericTest.do_numeric_test..run..c3s|]}|VqdSrYrMrrErMrN sz;NumericTest.do_numeric_test..run..c3s|]}|VqdSrYrMrrrMrNrscSsg|] }t|qSrM)strrrMrMrNrqs)r r r7r=r8r setr)rBrCrDrE check_scaler1rrrrNrOs  z(NumericTest.do_numeric_test..run)NF)r# emits_warningrPrMrrNdo_numeric_test s zNumericTest.do_numeric_testrcCs*|tddddtdgtdgdSNrr precisionscale9/@15.7563rdecimalDecimalryrMrMrNtest_render_literal_numeric"s    z'NumericTest.test_render_literal_numericcCs&|tdddddtdgdgdSNrrrFrr asdecimalrrrryrMrMrN#test_render_literal_numeric_asfloat*s   z/NumericTest.test_render_literal_numeric_asfloatcCs(|tddtdgdgddddS)NrrrrcSs|dk rt|dpdSrroundnrMrMrN7z7NumericTest.test_render_literal_float..rrrrryrMrMrNtest_render_literal_float2s  z%NumericTest.test_render_literal_floatcCs0|tdddddtdgtdgdddS)NT)Zdecimal_return_scalerg6ߗD/@z 15.7563827rrrLrrMrMrNtest_float_custom_scale:s    z#NumericTest.test_float_custom_scalecCs*|tddddtdgtdgdSrrr rMrMrNtest_numeric_as_decimalCs    z#NumericTest.test_numeric_as_decimalcCs&|tdddddtdgdgdSrrr rMrMrNtest_numeric_as_floatJs   z!NumericTest.test_numeric_as_floatcCs|tddddgdgdS)Nrrrrrr rMrMrNtest_numeric_null_as_decimalQsz(NumericTest.test_numeric_null_as_decimalcCs|tdddddgdgdS)NrrrFrrr rMrMrNtest_numeric_null_as_floatUs  z&NumericTest.test_numeric_null_as_floatcCs6|tddddtddgtddgddddS) NrT)rrrrcSs|dk rt|dpdS)NrrrrrMrMrNrarz3NumericTest.test_float_as_decimal..rrr rMrMrNtest_float_as_decimal[s   z!NumericTest.test_float_as_decimalcCs*|tdddtdgdgddddS)Nr)rrrcSs|dk rt|dpdSrrrrMrMrNrirz1NumericTest.test_float_as_float..rrr rMrMrNtest_float_as_floatds  zNumericTest.test_float_as_floatcCs$d}|tt|}t||dS)Nr)scalarr rrrLrJexprvalrMrMrNtest_float_coerce_round_triplsz(NumericTest.test_float_coerce_round_tripcCs*td}|tt|}t||dS)Nr)rrrr rrrrMrMrNtest_decimal_coerce_round_tripus z*NumericTest.test_decimal_coerce_round_tripcCs2td}|tt|tdd}t||dS)Nrrrr)rrrr rrrrrMrMrN%test_decimal_coerce_round_trip_w_cast}s z1NumericTest.test_decimal_coerce_round_trip_w_castcCs8ttdtdtdg}|tddd||dS)Nz54.234246451650z0.004354z900.0rrrrrrrrLrZnumbersrMrMrNtest_precision_decimalsz"NumericTest.test_precision_decimalcCsttdtdtdtdtdtdtdtdtd td td td g }|td dd||dS)ztest exceedingly small decimals. Decimal reports values with E notation when the exponent is greater than 6. z1E-2z1E-3z1E-4z1E-5z1E-6z1E-7z1E-8z0.01000005940696z0.00000005940696z0.00000000000696z0.70000000000696z696E-12rrNrrrMrMrNtest_enotation_decimals z"NumericTest.test_enotation_decimalcCs@ttdtdtdtdg}|tddd||dS) z test exceedingly large decimals.z4E+8z5748E+15z 1.521E+15z00000000000000.1E+12rrNrrrMrMrNtest_enotation_decimal_largesz(NumericTest.test_enotation_decimal_largecCs8ttdtdtdg}|tddd||dS)Nz31943874831932418390.01z319438950232418390.273596z87673.594069654243&rrrrrMrMrNtest_many_significant_digitssz(NumericTest.test_many_significant_digitscCs,ttdg}|tddd||dddS)Nz1.000rr rTr rrrMrMrNtest_numeric_no_decimals z#NumericTest.test_numeric_no_decimalN)#rRrSrTrr#rUrrrrrrZprecision_generic_float_typer r r Zfetch_null_from_numericrrZfloats_to_four_decimalsrrrZimplicit_decimal_bindsrrZprecision_numerics_generalrZ"precision_numerics_enotation_largerrZ*precision_numerics_many_significant_digitsr!Z-precision_numerics_retains_significant_digitsr"rMrMrMrNr sF              rc@sDeZdZdZeddZddZddZej j dd Z d d Z d S) BooleanTestTc Cs2td|tdtdddtdttdtdddS) N boolean_tabler]TF)r_Z autoincrementrFunconstrained_value)Zcreate_constraint)r r rrrarMrMrNrcszBooleanTest.define_tablescCs|tddgddgdS)NTFrryrMrMrNtest_render_literal_boolsz$BooleanTest.test_render_literal_boolcCs\|jj}||dddd|t|jj|jj}t |dt |dt sXt dS)NrdTFr]rFr%)TFr) rfr$r=r8r r@rFr%rhrriboolrArLrJr$rHrMrMrNrls  zBooleanTest.test_round_tripcCsJ|jj}||dddd|t|jj|jj}t |ddS)Nrdr')NN) rfr$r=r8r r@rFr%rhrr)rMrMrNrs zBooleanTest.test_nullc Cs|jj}tj}||ddddddddgt|t |j j  |j j dt|t |j j  |j jdt|t |j j  |j j dt|t |j j  |j jdW5QRXdS)NrdTr'rF)rfr$rr;rr=r8rrr r@r]r?rFr%)rLr$rrMrMrNtest_whereclausesH     zBooleanTest.test_whereclauseN) rRrSrTrrrcr&rlr#rZnullable_booleansrr*rMrMrMrNr#s  r#c@seZdZdZdZeZeddZddZ ddZ d d Z d d Z e d e dddZe de dddZe de dddZe dddddddddedfedf d d!Zd"d#Ze jd$d%d&d'd(d)d*d+Zd,d-Ze jd$d%d&d(d)d.d/Zd0d1Zd2d3Zd4S)5JSONTest) json_typeTc CsHtd|tdtddtdtdddtd |jddtd |jdd dS N data_tabler]T)r_nameF)Znullablergnulldata)Z none_as_nullr r rr"r`rarMrMrNrc+s zJSONTest.define_tablescCs|ddd|dS)Nvalue1value2key1key2)_test_round_triprrMrMrNtest_round_trip_data16szJSONTest.test_round_trip_data1cCsF|jj}||dd|d|t|jj}t||fdS)Nrdrow1)r]r/rg) rfr.r=r8r r@rgrhr)rL data_elementrJr.rHrMrMrNr89s zJSONTest._test_round_tripcs|r g}n0dddifddddgfdddifddddgfg}ddd d d d td fd tdtjjfddddddddddtjfddtjfdtdfdtdtj fdtdfg|fdd}|S) Njsonrbarrtwothree)booleanT)r@F)r@N)stringz some string)rANrA réve illér|)integerr)rCrd)rCr)rCN)floatg<@)rDN)rD= 2A)numericrErFgBĴBg[?f@_decimalz 1234567.89z99998969694839.983485848z99939.983485848cstjddi|}|S)Nrsa)r# combinations)fnelementsrMrNdecorate{sz*JSONTest._index_fixtures..decorate) r,r/r#rZ(json_index_supplementary_unicode_elementr Zpython3rrZ/cast_precision_numerics_many_significant_digits)Zinclude_comparisonZ json_elementsrMrMrKrN_index_fixturesEsP        &( zJSONTest._index_fixturesc s|jj}|dkrGfdddtjtj|d}tdt|t||}d}|| j dt d|dd t d|dd d n|| d||d d}|r|dkrt| d \}} t | } t || } t|tjr|} ntt|} | | f}n|} n|} || |fS) NrGcseZdZfddZZS)z3JSONTest._json_value_insert..DecimalEncodercs$t|tjrt|St||SrY)rirrrsuperdefault)rLo)DecimalEncoder __class__rMrNrPs z;JSONTest._json_value_insert..DecimalEncoder.default)rRrSrTrP __classcell__rMrR)rSrNrRsrRrz"(%s)"rFr:T)Zliteral_executer/rgr1.)rfr.r< JSONEncoderdumpsresubrr=r8r9rsplitlenrirr) rLrJr`rFr;r.Z json_datap_sabsp compare_valuerMrUrN_json_value_insertsB       zJSONTest._json_value_insertFrc Cs|jj}d|i}tj}|||||\}}}|jjd}|rj|dkrZ|rZ|j|}nt |d|}| t |} t | |t jrtt| t|W5QRXdSNr6rFas_%s)rfr.rr;rrdr@rg as_numericgetattrrr rr,rrr) rLr`rFr.r;rrcr^rZ roundtriprMrMrNtest_index_typed_accesss$      z JSONTest.test_index_typed_accessc Cs|jj}d|i}tj|}|||||\}}}|jjd}|rj|dkrZ|rZ|j|}nt |d|}| t | ||k } t| |fW5QRXdSrerfr.rr;rrdr@rgrgrhr=r r?rhr rLr`rFr.r;rrcr^rrHrMrMrNtest_index_typed_comparisons$     z$JSONTest.test_index_typed_comparisonc Cs|jj}dd|ii}tj|}|||||\}}}|jjd}|rn|dkr^|r^|j|}nt |d|}| t | ||k } t| |fW5QRXdS)Nr6subkey1)r6rmrFrfrjrkrMrMrNtest_path_typed_comparisons$      z#JSONTest.test_path_typed_comparison)T)FrY)rr))g)gv.@)za stringrBr|c Csh|jj}|}tjH}||d||d|t|jj |jj  }t |||fW5QRXdS)Nr:rV) rfr.rr;rr=r8r r@rgr1rhr)rLelementr.r;rrHrMrMrNtest_single_element_round_trips  z'JSONTest.test_single_element_round_tripc Cs|jj}ddi}tjtjd}tjtjd}tjt ||dd}|j |dd| l}| | d|d | t|jj}t||ft|jt|gt|jtt|gW5QRXdS) Nr6data1)Z side_effect)Zjson_serializerZjson_deserializer)optionsT)Z checkfirstr:r/rg)rfr.rZMockr<rYloadsrZtesting_enginer<r7rr=r8r r@rgrhrZ mock_callscall)rLr.r;ZjsZjdZenginerrHrMrMrNtest_round_trip_custom_json8s"   z$JSONTest.test_round_trip_custom_json) parameters)multiparameters)r9)omit insert_type)argnamescCs|jjjd}|}|dkr6|jjdddd}}nx|dkr\|jjddddg}}nR|dkr|jjjddddi}}n*|dkr|jjddd}}nd st|||t|t |jjjj  | t dt|t |ddS) Nr1rxr1)r/r1rgryr9rzrtF)rfr.r@r8r9rAr=rrr r/r?rr)rLrJr{rrrGparamsrMrMrN test_round_trip_none_as_sql_nullNsB       z)JSONTest.test_round_trip_none_as_sql_nullcCsr|jjjd}|}||jjdtjdt|t |jjjj  t |t dkdt|t |ddS)Nrgr}rtr)rfr.r@r=r8rNULLrrr r/r?rr")rLrJrrrMrMrN&test_round_trip_json_null_as_json_nulls    z/JSONTest.test_round_trip_json_null_as_json_nullcCs|jjjd}|dkr0|jjddd}}nR|dkrT|jjdddg}}n.|dkrz|jjjdddi}}ndst|}|||t|t |jjjj  t |t dkdt|t |ddS) Nrgrxr}rtryr9Fr)rfr.r@r8r9rAr=rrr r/r?rr")rLrJr{rrGr~rrMrMrN!test_round_trip_none_as_json_nulls4       z*JSONTest.test_round_trip_none_as_json_nullc Cstjx}||jjdtdtdddtdiidt | t |jjj j tdtdddtdiiW5QRXdS)Nr}r|rgZk1u drôl🐍ert)rr;rr=rfr.r8r,r/rrr r@rgrLrrMrMrNtest_unicode_round_trips&     z JSONTest.test_unicode_round_tripc st}Gfddd|}t|}|dddd}|||||ddddgt|tjj j j t tjj j j t jj j jdkdt|tjj j j t tjj j j t jj j jdkdW5QRXdS)NcseZdZjjZdS)z.JSONTest.test_eval_none_flag_orm..DataN)rRrSrTrfr.Z __table__rMr[rMrNDatasrd1rVZd2)rN)r-r.addcommitZbulk_insert_mappingsrqueryrrfr.r@rgr"r1filterr/rh)rLrJZBaserrarrMr[rNtest_eval_none_flag_orms8    z JSONTest.test_eval_none_flag_ormN)rRrSrTr~rrr`rrcr9r8rNrdr#rrirlrnrIr,r/rqrwrrrrrrMrMrMrNr+%sf  =K       , "r+c@seZdZdZdZdZeZdddZddddZ d d d gd d dgddiddigdZ d d dgZ dddddddgdddiidiZ dd d!d"id#Z ed$d%Zd&d'Zd5d(d)Zd*d+Zejjd,d-Zd.d/Zd0d1Zd2d3Zd4S)6JSONLegacyStringCastIndexTestztest JSON index access with "cast to string", which we have documented for a long time as how to compare JSON values, but is ultimately not reliable in all cases. The "as_XYZ()" comparators should be used instead. )r,Z!legacy_unconditional_json_extractTr3r4r5zvalue ' three ')z Key 'One'key twoz key threerdrr rr>r?ZfourZfivesixZseven)r6r7key3nestedr`d)r_r@fh)egelem3elem4Zelem5)Zelem1elem2rz some valuerr=)r_r`r@c CsDtd|tdtddtdtdddtd |jtd |jdd dSr-r2rarMrMrNrcs  z+JSONLegacyStringCastIndexTest.define_tablesc CsjtjV}||jjd|jdd|jdd|j dd|j dd|j dd|j dgW5QRXdS)Nr}rtr2r3r4r5r6) rr;rr=rfr.r8rrdata2data3data4data5data6rrMrMrN_criteria_fixture)s        z/JSONLegacyStringCastIndexTest._criteria_fixturec Csx|tj\}t|jjjj |}t | |||rjt |j tjddid}t || |W5QRXdS)Nr4T)r6)rrr;connectr rfr.r@r/r?rrrr:Zexec_driver_sql)rLcritexpectedrzrrGZ literal_sqlrMrMrN_test_index_criteria7s z2JSONLegacyStringCastIndexTest._test_index_criteriacCsJ|jjjj}|jjjd}|t|dddgt|dtdkddS)Nrgr}rrrz"value2") rfr.r@r/rr Zin_rr"rLr/rrMrMrN#test_string_cast_crit_spaces_in_keyGs zAJSONLegacyStringCastIndexTest.test_string_cast_crit_spaces_in_keycCsB|jjjj}|jjjd}|t|dkt|dtdkddS)Nrgrrdz"two"rfr.r@r/rr rr"rrMrMrN test_string_cast_crit_simple_intVs z>JSONLegacyStringCastIndexTest.test_string_cast_crit_simple_intcCs,|jjjd}|t|dtdkddS)Nrg)rrdrz"seven"rrfr.r@rrr"rrMrMrN test_string_cast_crit_mixed_pathfs z>JSONLegacyStringCastIndexTest.test_string_cast_crit_mixed_pathcCs,|jjjd}|t|dtdkddS)Nrg)rrrrz"elem5"rrrrMrMrN!test_string_cast_crit_string_pathms z?JSONLegacyStringCastIndexTest.test_string_cast_crit_string_pathcCsB|jjjj}|jjjd}|t|dkt|dtdkddS)Nrgrr`z "some value"rrrMrMrN*test_string_cast_crit_against_string_basicus zHJSONLegacyStringCastIndexTest.test_string_cast_crit_against_string_basicN)T)rRrSrT__doc__r~rrr`rrrrrrrrrcrrrrr Zjson_array_indexesrrrrrMrMrMrNrs<      r)rrr+rrrrrrrrrrrrrrrr#)Hrrr<rZrwrrrrZ assertionsrrr Zschemar r r rrrrrrrrrrrrrrr r"r#r%r&r'r)r*r+r,Zext.declarativer-Zormr.r/objectr0ZTestBaserVZ TablesTestrrrrrrrrrrrrrrrrrr#r+r__all__rMrMrMrNs                                     -N@V*&CYT