-
-
Notifications
You must be signed in to change notification settings - Fork 49
Expand file tree
/
Copy pathKeyMatchLookupTests.prg
More file actions
105 lines (85 loc) · 3.63 KB
/
Copy pathKeyMatchLookupTests.prg
File metadata and controls
105 lines (85 loc) · 3.63 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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
//
// Copyright (c) XSharp B.V. All Rights Reserved.
// Licensed under the Apache License, Version 2.0.
// See License.txt in the project root for license information.
//
USING System
USING System.Collections.Generic
USING System.Text
USING XUnit
BEGIN NAMESPACE XSharp.VFP.Tests
CLASS KeyMatchLookupTests
STATIC CONSTRUCTOR
XSharp.RuntimeState.Dialect := XSharpDialect.FoxPro
END CONSTRUCTOR
// --- KEYMATCH ---
[Fact, Trait("Category", "KeyMatch")];
METHOD KeyMatchExistingKeyReturnsTrue AS VOID
CREATE CURSOR curTest (pCode C(10), pName C(50))
INSERT INTO curTest VALUES ("A001", "Product 1")
INSERT INTO curTest VALUES ("A002", "Product 2")
INSERT INTO curTest VALUES ("A003", "Product 3")
INDEX ON pCode TAG pCode
Assert.True(KEYMATCH("A002"))
END METHOD
[Fact, Trait("Category", "KeyMatch")];
METHOD KeyMatchNonExistingKeyReturnsFalse AS VOID
CREATE CURSOR curTest (pCode C(10), pName C(50))
INSERT INTO curTest VALUES ("A001", "Product 1")
INSERT INTO curTest VALUES ("A002", "Product 2")
INDEX ON pCode TAG pCode
Assert.False(KEYMATCH("B999"))
END METHOD
[Fact, Trait("Category", "KeyMatch")];
METHOD KeyMatchPreservesRecordPointer AS VOID
CREATE CURSOR curTest (pCode C(10), pName C(50))
INSERT INTO curTest VALUES ("A001", "Product 1")
INSERT INTO curTest VALUES ("A002", "Product 2")
INSERT INTO curTest VALUES ("A003", "Product 3")
INDEX ON pCode TAG pCode
GOTO 3
VAR nRecBefore := RECNO()
VAR lFound := KEYMATCH("A001")
VAR nRecAfter := RECNO()
Assert.True(lFound)
Assert.Equal(nRecBefore, nRecAfter)
END METHOD
// --- LOOKUP ---
[Fact, Trait("Category", "Lookup")];
METHOD LookupFoundReturnsFieldValue AS VOID
CREATE CURSOR curTest (pCode C(10), pName C(50))
INSERT INTO curTest VALUES ("A001", "Product 1")
INSERT INTO curTest VALUES ("A002", "Product 2")
INSERT INTO curTest VALUES ("A003", "Product 3")
INDEX ON pCode TAG pCode
VAR cResult := LOOKUP("pName", "A002", "pCode", "pCode")
Assert.Equal("Product 2", ALLTRIM(cResult))
END METHOD
[Fact, Trait("Category", "Lookup")];
METHOD LookupNotFoundReturnsEmpty AS VOID
CREATE CURSOR curTest (pCode C(10), pName C(50))
INSERT INTO curTest VALUES ("A001", "Product 1")
INDEX ON pCode TAG pCode
VAR cResult := LOOKUP("pName", "B999", "pCode", "pCode")
Assert.True(EMPTY(ALLTRIM(cResult)))
END METHOD
[Fact, Trait("Category", "Lookup")];
METHOD LookupFoundMovesPointer AS VOID
CREATE CURSOR curTest (pCode C(10), pName C(50))
INSERT INTO curTest VALUES ("A001", "Product 1")
INSERT INTO curTest VALUES ("A002", "Product 2")
INDEX ON pCode TAG pCode
GOTO 1
LOOKUP("pName", "A002", "pCode", "pCode")
Assert.Equal("A002", ALLTRIM(FIELDGET(FieldPos("pCode"))))
END METHOD
[Fact, Trait("Category", "Lookup")];
METHOD LookupNotFoundEofTrue AS VOID
CREATE CURSOR curTest (pCode C(10), pName C(50))
INSERT INTO curTest VALUES ("A001", "Product 1")
INDEX ON pCode TAG pCode
LOOKUP("pName", "B999", "pCode", "pCode")
Assert.True(EOF())
END METHOD
END CLASS
END NAMESPACE