-
Notifications
You must be signed in to change notification settings - Fork 874
Expand file tree
/
Copy pathDataTypeNameTests.cs
More file actions
86 lines (78 loc) · 5.08 KB
/
DataTypeNameTests.cs
File metadata and controls
86 lines (78 loc) · 5.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
using System;
using Npgsql.Internal.Postgres;
using NUnit.Framework;
namespace Npgsql.Tests;
public class DataTypeNameTests
{
[Test]
public void MaxLengthDataTypeName()
{
var name = new string('a', DataTypeName.NAMEDATALEN);
var fullyQualifiedDataTypeName= $"public.{name}";
Assert.DoesNotThrow(() => new DataTypeName(fullyQualifiedDataTypeName));
Assert.That(fullyQualifiedDataTypeName, Is.EqualTo(new DataTypeName(fullyQualifiedDataTypeName).Value));
}
[Test]
public void TooLongDataTypeName()
{
var name = new string('a', DataTypeName.NAMEDATALEN + 1);
var fullyQualifiedDataTypeName= $"public.{name}";
var exception = Assert.Throws<ArgumentException>(() => new DataTypeName(fullyQualifiedDataTypeName));
Assert.That(exception!.Message, Does.EndWith($": public.{new string('a', DataTypeName.NAMEDATALEN)}"));
}
[TestCase("public.name", ExpectedResult = "public._name")]
[TestCase("public._name", ExpectedResult = "public._name")]
[TestCase("public.zzzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa123", ExpectedResult = "public._zzzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa12")]
public string ToArrayName(string name)
=> new DataTypeName(name).ToArrayName();
[TestCase("public.multirange", ExpectedResult = "public.multirange")]
[TestCase("public.abcmultirange123", ExpectedResult = "public.abcmultirange123")]
[TestCase("public.multiRANGE", ExpectedResult = "public.multiRANGE_multirange")]
public string ToDefaultMultirangeNameHasMultiRange(string name)
=> new DataTypeName(name).ToDefaultMultirangeName();
[TestCase("public.range", ExpectedResult = "public.multirange")]
[TestCase("public.abcrange123", ExpectedResult = "public.abcmultirange123")]
[TestCase("public.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarange", ExpectedResult = "public.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamultirange")] // Replace goes to max length
[TestCase("public.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarange1", ExpectedResult = "public.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamultir")] // Replace goes over max length
[TestCase("public.RANGE", ExpectedResult = "public.RANGE_multirange")]
public string ToDefaultMultirangeNameHasRange(string name)
=> new DataTypeName(name).ToDefaultMultirangeName();
[TestCase("public.name", null, ExpectedResult = "public.name")]
[TestCase("public._name", null, ExpectedResult = "public._name")]
[TestCase("public.name[]", null, ExpectedResult = "public._name")]
[TestCase("public.integer", null, ExpectedResult = "public.integer")]
[TestCase("name", null, ExpectedResult = "pg_catalog.name")]
[TestCase("_name", null, ExpectedResult = "pg_catalog._name")]
[TestCase("name[]", null, ExpectedResult = "pg_catalog._name")]
[TestCase("mytype", null, ExpectedResult = "-.mytype")]
[TestCase("_mytype", null, ExpectedResult = "-._mytype")]
[TestCase("mytype[]", null, ExpectedResult = "-._mytype")]
[TestCase("character varying", null, ExpectedResult = "pg_catalog.varchar")]
[TestCase("decimal(facet_name)", null, ExpectedResult = "pg_catalog.numeric")]
[TestCase("name", "public", ExpectedResult = "public.name")]
[TestCase("name ", "public", ExpectedResult = "public.name")]
[TestCase("_name", "public", ExpectedResult = "public._name")]
[TestCase("name[]", "public", ExpectedResult = "public._name")]
[TestCase("timestamp with time zone", "public", ExpectedResult = "public.timestamp with time zone")]
[TestCase("timestamp with time zone", "pg_catalog", ExpectedResult = "pg_catalog.timestamptz")]
[TestCase("timestamp with time zone", null, ExpectedResult = "pg_catalog.timestamptz")]
[TestCase("boolean(facet_name)", "public", ExpectedResult = "public.boolean(facet_name)")]
[TestCase("boolean(facet_name)", "pg_catalog", ExpectedResult = "pg_catalog.bool")]
[TestCase("boolean(facet_name)", null, ExpectedResult = "pg_catalog.bool")]
[TestCase(" public.name ", null, ExpectedResult = "public.name")]
[TestCase("decimal", "public", ExpectedResult = "public.decimal")]
[TestCase("numeric", "public", ExpectedResult = "public.numeric")]
public string FromDisplayName(string name, string? schema)
=> DataTypeName.FromDisplayName(schema is null or "pg_catalog" ? name : schema + "." + name).Value;
[TestCase("pg_catalog.bool", ExpectedResult = "boolean")]
[TestCase("public.bool", ExpectedResult = "bool")]
[TestCase("pg_catalog.numeric", ExpectedResult = "numeric")]
[TestCase("pg_catalog._numeric", ExpectedResult = "numeric[]")]
[TestCase("pg_catalog.decimal", ExpectedResult = "numeric")]
[TestCase("public.numeric", ExpectedResult = "numeric")]
[TestCase("public._numeric", ExpectedResult = "numeric[]")]
[TestCase("public.decimal", ExpectedResult = "decimal")]
[TestCase("public._decimal", ExpectedResult = "decimal[]")]
public string UnqualifiedDisplayName(string fullyQualifiedName)
=> new DataTypeName(fullyQualifiedName).UnqualifiedDisplayName;
}