...

Source file src/github.com/jackc/pgx/v5/pgtype/interval_test.go

Documentation: github.com/jackc/pgx/v5/pgtype

     1  package pgtype_test
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/jackc/pgx/v5/pgtype"
     9  	"github.com/jackc/pgx/v5/pgxtest"
    10  )
    11  
    12  func TestIntervalCodec(t *testing.T) {
    13  	pgxtest.RunValueRoundTripTests(context.Background(), t, defaultConnTestRunner, nil, "interval", []pgxtest.ValueRoundTripTest{
    14  		{
    15  			pgtype.Interval{Microseconds: 1, Valid: true},
    16  			new(pgtype.Interval),
    17  			isExpectedEq(pgtype.Interval{Microseconds: 1, Valid: true}),
    18  		},
    19  		{
    20  			pgtype.Interval{Microseconds: 1000000, Valid: true},
    21  			new(pgtype.Interval),
    22  			isExpectedEq(pgtype.Interval{Microseconds: 1000000, Valid: true}),
    23  		},
    24  		{
    25  			pgtype.Interval{Microseconds: 1000001, Valid: true},
    26  			new(pgtype.Interval),
    27  			isExpectedEq(pgtype.Interval{Microseconds: 1000001, Valid: true}),
    28  		},
    29  		{
    30  			pgtype.Interval{Microseconds: 123202800000000, Valid: true},
    31  			new(pgtype.Interval),
    32  			isExpectedEq(pgtype.Interval{Microseconds: 123202800000000, Valid: true}),
    33  		},
    34  		{
    35  			pgtype.Interval{Days: 1, Valid: true},
    36  			new(pgtype.Interval),
    37  			isExpectedEq(pgtype.Interval{Days: 1, Valid: true}),
    38  		},
    39  		{
    40  			pgtype.Interval{Months: 1, Valid: true},
    41  			new(pgtype.Interval),
    42  			isExpectedEq(pgtype.Interval{Months: 1, Valid: true}),
    43  		},
    44  		{
    45  			pgtype.Interval{Months: 12, Valid: true},
    46  			new(pgtype.Interval),
    47  			isExpectedEq(pgtype.Interval{Months: 12, Valid: true}),
    48  		},
    49  		{
    50  			pgtype.Interval{Months: 13, Days: 15, Microseconds: 1000001, Valid: true},
    51  			new(pgtype.Interval),
    52  			isExpectedEq(pgtype.Interval{Months: 13, Days: 15, Microseconds: 1000001, Valid: true}),
    53  		},
    54  		{
    55  			pgtype.Interval{Microseconds: -1, Valid: true},
    56  			new(pgtype.Interval),
    57  			isExpectedEq(pgtype.Interval{Microseconds: -1, Valid: true}),
    58  		},
    59  		{
    60  			pgtype.Interval{Microseconds: -1000000, Valid: true},
    61  			new(pgtype.Interval),
    62  			isExpectedEq(pgtype.Interval{Microseconds: -1000000, Valid: true}),
    63  		},
    64  		{
    65  			pgtype.Interval{Microseconds: -1000001, Valid: true},
    66  			new(pgtype.Interval),
    67  			isExpectedEq(pgtype.Interval{Microseconds: -1000001, Valid: true}),
    68  		},
    69  		{
    70  			pgtype.Interval{Microseconds: -123202800000000, Valid: true},
    71  			new(pgtype.Interval),
    72  			isExpectedEq(pgtype.Interval{Microseconds: -123202800000000, Valid: true}),
    73  		},
    74  		{
    75  			pgtype.Interval{Days: -1, Valid: true},
    76  			new(pgtype.Interval),
    77  			isExpectedEq(pgtype.Interval{Days: -1, Valid: true}),
    78  		},
    79  		{
    80  			pgtype.Interval{Months: -1, Valid: true},
    81  			new(pgtype.Interval),
    82  			isExpectedEq(pgtype.Interval{Months: -1, Valid: true}),
    83  		},
    84  		{
    85  			pgtype.Interval{Months: -12, Valid: true},
    86  			new(pgtype.Interval),
    87  			isExpectedEq(pgtype.Interval{Months: -12, Valid: true}),
    88  		},
    89  		{
    90  			pgtype.Interval{Months: -13, Days: -15, Microseconds: -1000001, Valid: true},
    91  			new(pgtype.Interval),
    92  			isExpectedEq(pgtype.Interval{Months: -13, Days: -15, Microseconds: -1000001, Valid: true}),
    93  		},
    94  		{
    95  			"1 second",
    96  			new(pgtype.Interval),
    97  			isExpectedEq(pgtype.Interval{Microseconds: 1000000, Valid: true}),
    98  		},
    99  		{
   100  			"1.000001 second",
   101  			new(pgtype.Interval),
   102  			isExpectedEq(pgtype.Interval{Microseconds: 1000001, Valid: true}),
   103  		},
   104  		{
   105  			"34223 hours",
   106  			new(pgtype.Interval),
   107  			isExpectedEq(pgtype.Interval{Microseconds: 123202800000000, Valid: true}),
   108  		},
   109  		{
   110  			"1 day",
   111  			new(pgtype.Interval),
   112  			isExpectedEq(pgtype.Interval{Days: 1, Valid: true}),
   113  		},
   114  		{
   115  			"1 month",
   116  			new(pgtype.Interval),
   117  			isExpectedEq(pgtype.Interval{Months: 1, Valid: true}),
   118  		},
   119  		{
   120  			"1 year",
   121  			new(pgtype.Interval),
   122  			isExpectedEq(pgtype.Interval{Months: 12, Valid: true}),
   123  		},
   124  		{
   125  			"-13 mon",
   126  			new(pgtype.Interval),
   127  			isExpectedEq(pgtype.Interval{Months: -13, Valid: true}),
   128  		},
   129  		{time.Hour, new(time.Duration), isExpectedEq(time.Hour)},
   130  		{
   131  			pgtype.Interval{Months: 1, Days: 1, Valid: true},
   132  			new(time.Duration),
   133  			isExpectedEq(time.Duration(2678400000000000)),
   134  		},
   135  		{pgtype.Interval{}, new(pgtype.Interval), isExpectedEq(pgtype.Interval{})},
   136  		{nil, new(pgtype.Interval), isExpectedEq(pgtype.Interval{})},
   137  	})
   138  }
   139  

View as plain text