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 package com.healthmarketscience.jackcess;
29
30 import java.io.File;
31 import java.util.Arrays;
32 import java.util.List;
33
34 import junit.framework.TestCase;
35
36 import static com.healthmarketscience.jackcess.DatabaseTest.*;
37
38
39
40
41 public class RelationshipTest extends TestCase {
42
43 public RelationshipTest(String name) throws Exception {
44 super(name);
45 }
46
47 public void testSimple() throws Exception {
48 Database db = open(new File("test/data/indexTest.mdb"));
49 Table t1 = db.getTable("Table1");
50 Table t2 = db.getTable("Table2");
51 Table t3 = db.getTable("Table3");
52
53 List<Relationship> rels = db.getRelationships(t1, t2);
54 assertEquals(1, rels.size());
55 Relationship rel = rels.get(0);
56 assertEquals("Table2Table1", rel.getName());
57 assertEquals(t2, rel.getFromTable());
58 assertEquals(Arrays.asList(t2.getColumn("id")),
59 rel.getFromColumns());
60 assertEquals(t1, rel.getToTable());
61 assertEquals(Arrays.asList(t1.getColumn("otherfk1")),
62 rel.getToColumns());
63 assertTrue(rel.hasReferentialIntegrity());
64 assertEquals(0, rel.getFlags());
65 assertSameRelationships(rels, db.getRelationships(t2, t1));
66
67 rels = db.getRelationships(t2, t3);
68 assertTrue(db.getRelationships(t2, t3).isEmpty());
69 assertSameRelationships(rels, db.getRelationships(t3, t2));
70
71 rels = db.getRelationships(t1, t3);
72 assertEquals(1, rels.size());
73 rel = rels.get(0);
74 assertEquals("Table3Table1", rel.getName());
75 assertEquals(t3, rel.getFromTable());
76 assertEquals(Arrays.asList(t3.getColumn("id")),
77 rel.getFromColumns());
78 assertEquals(t1, rel.getToTable());
79 assertEquals(Arrays.asList(t1.getColumn("otherfk2")),
80 rel.getToColumns());
81 assertTrue(rel.hasReferentialIntegrity());
82 assertEquals(0, rel.getFlags());
83 assertSameRelationships(rels, db.getRelationships(t3, t1));
84
85 try {
86 db.getRelationships(t1, t1);
87 fail("IllegalArgumentException should have been thrown");
88 } catch(IllegalArgumentException ignored) {
89
90 }
91
92 }
93
94 private void assertSameRelationships(
95 List<Relationship> expected, List<Relationship> found)
96 {
97 assertEquals(expected.size(), found.size());
98 for(int i = 0; i < expected.size(); ++i) {
99 Relationship eRel = expected.get(i);
100 Relationship fRel = found.get(i);
101 assertEquals(eRel.getName(), fRel.getName());
102 }
103 }
104
105 }