zf

zenflows testing
git clone https://s.sonu.ch/~srfsh/zf.git
Log | Files | Refs | Submodules | README | LICENSE

interval.exs (21132B)


      1 defmodule Ecto.Integration.IntervalTest do
      2   use Ecto.Integration.Case, async: Application.compile_env(:ecto, :async_integration_tests, true)
      3 
      4   alias Ecto.Integration.{Post, User, Usec}
      5   alias Ecto.Integration.TestRepo
      6   import Ecto.Query
      7 
      8   @posted ~D[2014-01-01]
      9   @inserted_at ~N[2014-01-01 02:00:00]
     10 
     11   setup do
     12     TestRepo.insert!(%Post{posted: @posted, inserted_at: @inserted_at})
     13     :ok
     14   end
     15 
     16   test "date_add with year" do
     17     dec = Decimal.new(1)
     18     assert [~D[2015-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, 1, "year"))
     19     assert [~D[2015-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, 1.0, "year"))
     20     assert [~D[2015-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^1, "year"))
     21     assert [~D[2015-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^1.0, "year"))
     22     assert [~D[2015-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^dec, "year"))
     23   end
     24 
     25   test "date_add with month" do
     26     dec = Decimal.new(3)
     27     assert [~D[2014-04-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, 3, "month"))
     28     assert [~D[2014-04-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, 3.0, "month"))
     29     assert [~D[2014-04-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^3, "month"))
     30     assert [~D[2014-04-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^3.0, "month"))
     31     assert [~D[2014-04-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^dec, "month"))
     32   end
     33 
     34   test "date_add with week" do
     35     dec = Decimal.new(3)
     36     assert [~D[2014-01-22]] = TestRepo.all(from p in Post, select: date_add(p.posted, 3, "week"))
     37     assert [~D[2014-01-22]] = TestRepo.all(from p in Post, select: date_add(p.posted, 3.0, "week"))
     38     assert [~D[2014-01-22]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^3, "week"))
     39     assert [~D[2014-01-22]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^3.0, "week"))
     40     assert [~D[2014-01-22]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^dec, "week"))
     41   end
     42 
     43   test "date_add with day" do
     44     dec = Decimal.new(5)
     45     assert [~D[2014-01-06]] = TestRepo.all(from p in Post, select: date_add(p.posted, 5, "day"))
     46     assert [~D[2014-01-06]] = TestRepo.all(from p in Post, select: date_add(p.posted, 5.0, "day"))
     47     assert [~D[2014-01-06]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^5, "day"))
     48     assert [~D[2014-01-06]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^5.0, "day"))
     49     assert [~D[2014-01-06]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^dec, "day"))
     50   end
     51 
     52   test "date_add with hour" do
     53     dec = Decimal.new(48)
     54     assert [~D[2014-01-03]] = TestRepo.all(from p in Post, select: date_add(p.posted, 48, "hour"))
     55     assert [~D[2014-01-03]] = TestRepo.all(from p in Post, select: date_add(p.posted, 48.0, "hour"))
     56     assert [~D[2014-01-03]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^48, "hour"))
     57     assert [~D[2014-01-03]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^48.0, "hour"))
     58     assert [~D[2014-01-03]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^dec, "hour"))
     59   end
     60 
     61   test "date_add with dynamic" do
     62     posted = @posted
     63     assert [~D[2015-01-01]]  = TestRepo.all(from p in Post, select: date_add(^posted, ^1, ^"year"))
     64     assert [~D[2014-04-01]]  = TestRepo.all(from p in Post, select: date_add(^posted, ^3, ^"month"))
     65     assert [~D[2014-01-22]] = TestRepo.all(from p in Post, select: date_add(^posted, ^3, ^"week"))
     66     assert [~D[2014-01-06]]  = TestRepo.all(from p in Post, select: date_add(^posted, ^5, ^"day"))
     67     assert [~D[2014-01-03]]  = TestRepo.all(from p in Post, select: date_add(^posted, ^48, ^"hour"))
     68   end
     69 
     70   test "date_add with negative interval" do
     71     dec = Decimal.new(-1)
     72     assert [~D[2013-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, -1, "year"))
     73     assert [~D[2013-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, -1.0, "year"))
     74     assert [~D[2013-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^-1, "year"))
     75     assert [~D[2013-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^-1.0, "year"))
     76     assert [~D[2013-01-01]] = TestRepo.all(from p in Post, select: date_add(p.posted, ^dec, "year"))
     77   end
     78 
     79   test "datetime_add with year" do
     80     dec = Decimal.new(1)
     81     assert [~N[2015-01-01 02:00:00]] =
     82            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 1, "year"))
     83     assert [~N[2015-01-01 02:00:00]] =
     84            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 1.0, "year"))
     85     assert [~N[2015-01-01 02:00:00]] =
     86            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^1, "year"))
     87     assert [~N[2015-01-01 02:00:00]] =
     88            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^1.0, "year"))
     89     assert [~N[2015-01-01 02:00:00]] =
     90            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "year"))
     91   end
     92 
     93   test "datetime_add with month" do
     94     dec = Decimal.new(3)
     95     assert [~N[2014-04-01 02:00:00]] =
     96            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 3, "month"))
     97     assert [~N[2014-04-01 02:00:00]] =
     98            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 3.0, "month"))
     99     assert [~N[2014-04-01 02:00:00]] =
    100            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^3, "month"))
    101     assert [~N[2014-04-01 02:00:00]] =
    102            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^3.0, "month"))
    103     assert [~N[2014-04-01 02:00:00]] =
    104            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "month"))
    105   end
    106 
    107   test "datetime_add with week" do
    108     dec = Decimal.new(3)
    109     assert [~N[2014-01-22 02:00:00]] =
    110             TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 3, "week"))
    111     assert [~N[2014-01-22 02:00:00]] =
    112             TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 3.0, "week"))
    113     assert [~N[2014-01-22 02:00:00]] =
    114             TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^3, "week"))
    115     assert [~N[2014-01-22 02:00:00]] =
    116             TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^3.0, "week"))
    117     assert [~N[2014-01-22 02:00:00]] =
    118             TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "week"))
    119   end
    120 
    121   test "datetime_add with day" do
    122     dec = Decimal.new(5)
    123     assert [~N[2014-01-06 02:00:00]] =
    124            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 5, "day"))
    125     assert [~N[2014-01-06 02:00:00]] =
    126            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 5.0, "day"))
    127     assert [~N[2014-01-06 02:00:00]] =
    128            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^5, "day"))
    129     assert [~N[2014-01-06 02:00:00]] =
    130            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^5.0, "day"))
    131     assert [~N[2014-01-06 02:00:00]] =
    132            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "day"))
    133   end
    134 
    135   test "datetime_add with hour" do
    136     dec = Decimal.new(60)
    137     assert [~N[2014-01-03 14:00:00]] =
    138            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 60, "hour"))
    139     assert [~N[2014-01-03 14:00:00]] =
    140            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 60.0, "hour"))
    141     assert [~N[2014-01-03 14:00:00]] =
    142            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^60, "hour"))
    143     assert [~N[2014-01-03 14:00:00]] =
    144            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^60.0, "hour"))
    145     assert [~N[2014-01-03 14:00:00]] =
    146            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "hour"))
    147   end
    148 
    149   test "datetime_add with minute" do
    150     dec = Decimal.new(90)
    151     assert [~N[2014-01-01 03:30:00]] =
    152            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 90, "minute"))
    153     assert [~N[2014-01-01 03:30:00]] =
    154            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 90.0, "minute"))
    155     assert [~N[2014-01-01 03:30:00]] =
    156            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^90, "minute"))
    157     assert [~N[2014-01-01 03:30:00]] =
    158            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^90.0, "minute"))
    159     assert [~N[2014-01-01 03:30:00]] =
    160            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "minute"))
    161   end
    162 
    163   test "datetime_add with second" do
    164     dec = Decimal.new(90)
    165     assert [~N[2014-01-01 02:01:30]] =
    166            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 90, "second"))
    167     assert [~N[2014-01-01 02:01:30]] =
    168            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 90.0, "second"))
    169     assert [~N[2014-01-01 02:01:30]] =
    170            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^90, "second"))
    171     assert [~N[2014-01-01 02:01:30]] =
    172            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^90.0, "second"))
    173     assert [~N[2014-01-01 02:01:30]] =
    174            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "second"))
    175   end
    176 
    177   @tag :uses_msec
    178   test "datetime_add with millisecond" do
    179     dec = Decimal.new(1500)
    180     assert [~N[2014-01-01 02:00:01]] =
    181            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 1500, "millisecond"))
    182     assert [~N[2014-01-01 02:00:01]] =
    183            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 1500.0, "millisecond"))
    184     assert [~N[2014-01-01 02:00:01]] =
    185            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^1500, "millisecond"))
    186     assert [~N[2014-01-01 02:00:01]] =
    187            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^1500.0, "millisecond"))
    188     assert [~N[2014-01-01 02:00:01]] =
    189            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "millisecond"))
    190   end
    191 
    192   @tag :microsecond_precision
    193   @tag :uses_usec
    194   test "datetime_add with microsecond" do
    195     dec = Decimal.new(1500)
    196     assert [~N[2014-01-01 02:00:00]] =
    197            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 1500, "microsecond"))
    198     assert [~N[2014-01-01 02:00:00]] =
    199            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, 1500.0, "microsecond"))
    200     assert [~N[2014-01-01 02:00:00]] =
    201            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^1500, "microsecond"))
    202     assert [~N[2014-01-01 02:00:00]] =
    203            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^1500.0, "microsecond"))
    204     assert [~N[2014-01-01 02:00:00]] =
    205            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "microsecond"))
    206   end
    207 
    208   test "datetime_add with dynamic" do
    209     inserted_at = @inserted_at
    210     assert [~N[2015-01-01 02:00:00]]  =
    211            TestRepo.all(from p in Post, select: datetime_add(^inserted_at, ^1, ^"year"))
    212     assert [~N[2014-04-01 02:00:00]]  =
    213            TestRepo.all(from p in Post, select: datetime_add(^inserted_at, ^3, ^"month"))
    214     assert [~N[2014-01-22 02:00:00]] =
    215            TestRepo.all(from p in Post, select: datetime_add(^inserted_at, ^3, ^"week"))
    216     assert [~N[2014-01-06 02:00:00]]  =
    217            TestRepo.all(from p in Post, select: datetime_add(^inserted_at, ^5, ^"day"))
    218     assert [~N[2014-01-03 14:00:00]] =
    219            TestRepo.all(from p in Post, select: datetime_add(^inserted_at, ^60, ^"hour"))
    220     assert [~N[2014-01-01 03:30:00]] =
    221            TestRepo.all(from p in Post, select: datetime_add(^inserted_at, ^90, ^"minute"))
    222     assert [~N[2014-01-01 02:01:30]] =
    223            TestRepo.all(from p in Post, select: datetime_add(^inserted_at, ^90, ^"second"))
    224   end
    225 
    226   test "datetime_add with dynamic in filters" do
    227     inserted_at = @inserted_at
    228     field = :inserted_at
    229     assert [_]  =
    230            TestRepo.all(from p in Post, where: p.inserted_at > datetime_add(^inserted_at, ^-1, "year"))
    231     assert [_]  =
    232            TestRepo.all(from p in Post, where: p.inserted_at > datetime_add(^inserted_at, -3, "month"))
    233     assert [_]  =
    234            TestRepo.all(from p in Post, where: field(p, ^field) > datetime_add(^inserted_at, ^-3, ^"week"))
    235     assert [_]  =
    236            TestRepo.all(from p in Post, where: field(p, ^field) > datetime_add(^inserted_at, -5, ^"day"))
    237   end
    238 
    239   test "datetime_add with negative interval" do
    240     dec = Decimal.new(-1)
    241     assert [~N[2013-01-01 02:00:00]] =
    242            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, -1, "year"))
    243     assert [~N[2013-01-01 02:00:00]] =
    244            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, -1.0, "year"))
    245     assert [~N[2013-01-01 02:00:00]] =
    246            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^-1, "year"))
    247     assert [~N[2013-01-01 02:00:00]] =
    248            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^-1.0, "year"))
    249     assert [~N[2013-01-01 02:00:00]] =
    250            TestRepo.all(from p in Post, select: datetime_add(p.inserted_at, ^dec, "year"))
    251   end
    252 
    253   test "from_now" do
    254     current = DateTime.utc_now().year
    255     dec = Decimal.new(5)
    256     assert [%{year: year}] = TestRepo.all(from p in Post, select: from_now(5, "year"))
    257     assert year > current
    258     assert [%{year: year}] = TestRepo.all(from p in Post, select: from_now(5.0, "year"))
    259     assert year > current
    260     assert [%{year: year}] = TestRepo.all(from p in Post, select: from_now(^5, "year"))
    261     assert year > current
    262     assert [%{year: year}] = TestRepo.all(from p in Post, select: from_now(^5.0, "year"))
    263     assert year > current
    264     assert [%{year: year}] = TestRepo.all(from p in Post, select: from_now(^dec, "year"))
    265     assert year > current
    266   end
    267 
    268   test "ago" do
    269     current = DateTime.utc_now().year
    270     dec = Decimal.new(5)
    271     assert [%{year: year}] = TestRepo.all(from p in Post, select: ago(5, "year"))
    272     assert year < current
    273     assert [%{year: year}] = TestRepo.all(from p in Post, select: ago(5.0, "year"))
    274     assert year < current
    275     assert [%{year: year}] = TestRepo.all(from p in Post, select: ago(^5, "year"))
    276     assert year < current
    277     assert [%{year: year}] = TestRepo.all(from p in Post, select: ago(^5.0, "year"))
    278     assert year < current
    279     assert [%{year: year}] = TestRepo.all(from p in Post, select: ago(^dec, "year"))
    280     assert year < current
    281   end
    282 
    283   test "datetime_add with utc_datetime" do
    284     {:ok, datetime} = DateTime.from_naive(@inserted_at, "Etc/UTC")
    285     TestRepo.insert!(%User{inserted_at: datetime})
    286 
    287     {:ok, datetime} = DateTime.from_naive(~N[2015-01-01 02:00:00], "Etc/UTC")
    288     dec = Decimal.new(1)
    289 
    290     assert [^datetime] =
    291            TestRepo.all(from p in User, select: datetime_add(type(^datetime, :utc_datetime), 0, "year"))
    292     assert [^datetime] =
    293            TestRepo.all(from p in User, select: datetime_add(p.inserted_at, 1, "year"))
    294     assert [^datetime] =
    295            TestRepo.all(from p in User, select: datetime_add(p.inserted_at, 1.0, "year"))
    296     assert [^datetime] =
    297            TestRepo.all(from p in User, select: datetime_add(p.inserted_at, ^1, "year"))
    298     assert [^datetime] =
    299            TestRepo.all(from p in User, select: datetime_add(p.inserted_at, ^1.0, "year"))
    300     assert [^datetime] =
    301            TestRepo.all(from p in User, select: datetime_add(p.inserted_at, ^dec, "year"))
    302   end
    303 
    304   @tag :microsecond_precision
    305   test "datetime_add with naive_datetime_usec" do
    306     TestRepo.insert!(%Usec{naive_datetime_usec: ~N[2014-01-01 02:00:00.000001]})
    307     datetime = ~N[2014-01-01 02:00:00.001501]
    308 
    309     assert [^datetime] =
    310            TestRepo.all(from u in Usec, select: datetime_add(type(^datetime, :naive_datetime_usec), 0, "microsecond"))
    311     assert [^datetime] =
    312            TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, 1500, "microsecond"))
    313     assert [^datetime] =
    314            TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, 1500.0, "microsecond"))
    315     assert [^datetime] =
    316            TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, ^1500, "microsecond"))
    317   end
    318 
    319   @tag :microsecond_precision
    320   @tag :decimal_precision
    321   test "datetime_add with naive_datetime_usec and decimal increment" do
    322     TestRepo.insert!(%Usec{naive_datetime_usec: ~N[2014-01-01 02:00:00.000001]})
    323     dec = Decimal.new(1500)
    324     datetime = ~N[2014-01-01 02:00:00.001501]
    325 
    326     assert [^datetime] =
    327            TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, ^1500.0, "microsecond"))
    328     assert [^datetime] =
    329            TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, ^dec, "microsecond"))
    330   end
    331 
    332   @tag :microsecond_precision
    333   test "datetime_add with utc_datetime_usec" do
    334     {:ok, datetime} = DateTime.from_naive(~N[2014-01-01 02:00:00.000001], "Etc/UTC")
    335     TestRepo.insert!(%Usec{utc_datetime_usec: datetime})
    336 
    337     {:ok, datetime} = DateTime.from_naive(~N[2014-01-01 02:00:00.001501], "Etc/UTC")
    338 
    339     assert [^datetime] =
    340            TestRepo.all(from u in Usec, select: datetime_add(type(^datetime, :utc_datetime_usec), 0, "microsecond"))
    341     assert [^datetime] =
    342            TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, 1500, "microsecond"))
    343     assert [^datetime] =
    344            TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, 1500.0, "microsecond"))
    345     assert [^datetime] =
    346            TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, ^1500, "microsecond"))
    347   end
    348 
    349   @tag :microsecond_precision
    350   @tag :decimal_precision
    351   test "datetime_add uses utc_datetime_usec with decimal increment" do
    352     {:ok, datetime} = DateTime.from_naive(~N[2014-01-01 02:00:00.000001], "Etc/UTC")
    353     TestRepo.insert!(%Usec{utc_datetime_usec: datetime})
    354 
    355     {:ok, datetime} = DateTime.from_naive(~N[2014-01-01 02:00:00.001501], "Etc/UTC")
    356     dec = Decimal.new(1500)
    357 
    358     assert [^datetime] =
    359            TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, ^1500.0, "microsecond"))
    360     assert [^datetime] =
    361            TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, ^dec, "microsecond"))
    362   end
    363 
    364   test "datetime_add with utc_datetime_usec in milliseconds" do
    365     {:ok, datetime} = DateTime.from_naive(~N[2014-01-01 02:00:00.001000], "Etc/UTC")
    366     TestRepo.insert!(%Usec{utc_datetime_usec: datetime})
    367 
    368     {:ok, datetime} = DateTime.from_naive(~N[2014-01-01 02:00:00.151000], "Etc/UTC")
    369 
    370     assert [^datetime] =
    371            TestRepo.all(from u in Usec, select: datetime_add(type(^datetime, :utc_datetime_usec), 0, "millisecond"))
    372     assert [^datetime] =
    373            TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, 150, "millisecond"))
    374     assert [^datetime] =
    375            TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, 150, "millisecond"))
    376     assert [^datetime] =
    377            TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, ^150, "millisecond"))
    378   end
    379 
    380   @tag :decimal_precision
    381   test "datetime_add uses utc_datetime_usec with decimal increment in milliseconds" do
    382     {:ok, datetime} = DateTime.from_naive(~N[2014-01-01 02:00:00.001000], "Etc/UTC")
    383     TestRepo.insert!(%Usec{utc_datetime_usec: datetime})
    384 
    385     {:ok, datetime} = DateTime.from_naive(~N[2014-01-01 02:00:00.151000], "Etc/UTC")
    386     dec = Decimal.new(150)
    387 
    388     assert [^datetime] =
    389            TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, ^150.0, "millisecond"))
    390     assert [^datetime] =
    391            TestRepo.all(from u in Usec, select: datetime_add(u.utc_datetime_usec, ^dec, "millisecond"))
    392   end
    393 
    394   test "datetime_add with naive_datetime_usec in milliseconds" do
    395     TestRepo.insert!(%Usec{naive_datetime_usec: ~N[2014-01-01 02:00:00.001000]})
    396     datetime = ~N[2014-01-01 02:00:00.151000]
    397 
    398     assert [^datetime] =
    399            TestRepo.all(from u in Usec, select: datetime_add(type(^datetime, :naive_datetime_usec), 0, "millisecond"))
    400     assert [^datetime] =
    401            TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, 150, "millisecond"))
    402     assert [^datetime] =
    403            TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, 150.0, "millisecond"))
    404     assert [^datetime] =
    405            TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, ^150, "millisecond"))
    406   end
    407 
    408   @tag :decimal_precision
    409   test "datetime_add with naive_datetime_usec and decimal increment in milliseconds" do
    410     TestRepo.insert!(%Usec{naive_datetime_usec: ~N[2014-01-01 02:00:00.001000]})
    411     dec = Decimal.new(150)
    412     datetime = ~N[2014-01-01 02:00:00.151000]
    413 
    414     assert [^datetime] =
    415            TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, ^150.0, "millisecond"))
    416     assert [^datetime] =
    417            TestRepo.all(from u in Usec, select: datetime_add(u.naive_datetime_usec, ^dec, "millisecond"))
    418   end
    419 end