func TestJSONArrayInt64_Scan_nil(t *testing.T) {
	var got pqt.JSONArrayInt64

	if err := got.Scan(nil); err != nil {
		t.Fatalf("unexpected error: %s", err.Error())
	}
	if got != nil {
		t.Errorf("unexpected output, expected: %T\n	%v\n	but got: %T\n	%v,", nil, nil, got, got)

	}
}
func TestJSONArrayInt64_Scan(t *testing.T) {
	success := map[string]pqt.JSONArrayInt64{
		"[1,2,3,4]": {0: 1, 1: 2, 2: 3, 3: 4},
		"[]":        {},
	}

SuccessLoop:
	for src, expected := range success {
		var got pqt.JSONArrayInt64

		err := got.Scan(src)
		if err != nil {
			t.Errorf("unexpected error: %s", err.Error())
			continue SuccessLoop
		}

		if !reflect.DeepEqual(expected, got) {
			t.Errorf("wrong output, expected %v but got %v", expected, got)
		}
	}

	fail := map[string]interface{}{
		`pqt: expected to get source argument in format "[1,2,...,N]", but got string1 at index 0`: "[string1,string2]",
		`pqt: expected to get source argument in format "[1,2,...,N]", but got ]`:                  "]",
		`pqt: expected to get source argument in format "[1,2,...,N]", but got [`:                  "[",
		`pqt: expected to get source argument in format "[1,2,...,N]", but got 12412s at index 0`:  "[12412s]",
		`pqt: expected to get source argument in format "[1,2,...,N]", but got {1,2,3}`:            "{1,2,3}",
		`pqt: expected to get source argument in format "[1,2,...,N]", but got (1,2,3)`:            "(1,2,3)",
	}

FailLoop:
	for expected, src := range fail {
		var got pqt.JSONArrayInt64

		err := got.Scan(src)
		if err == nil {
			t.Error("expected error, got nil")
			continue FailLoop
		}
		if expected != err.Error() {
			t.Errorf("undexpected error, got:\n	%s\nbut expected:\n	%s", err.Error(), expected)
		}
	}
}