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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
  | 
/*
 * Copyright 2006-2012 Amazon Technologies, Inc. or its affiliates.
 * Amazon, Amazon.com and Carbonado are trademarks or registered trademarks
 * of Amazon Technologies, Inc. or its affiliates.  All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.amazon.carbonado.repo.indexed;
import java.util.Map;
import junit.framework.TestSuite;
import com.amazon.carbonado.synthetic.SyntheticStorableReferenceAccess;
import com.amazon.carbonado.synthetic.TestSyntheticStorableBuilders;
import com.amazon.carbonado.info.StorableIndex;
import com.amazon.carbonado.info.StorableInfo;
import com.amazon.carbonado.info.StorableIntrospector;
import com.amazon.carbonado.info.StorableProperty;
import com.amazon.carbonado.info.Direction;
import com.amazon.carbonado.Storable;
import com.amazon.carbonado.stored.StorableTestBasic;
/**
 *
 *
 * @author Brian S O'Neill
 */
public class TestIndexEntryGenerator extends TestSyntheticStorableBuilders {
    public static void main(String[] args) {
        junit.textui.TestRunner.run(suite());
    }
    public static TestSuite suite() {
        return new TestSuite(TestIndexEntryGenerator.class);
    }
    public TestIndexEntryGenerator(String name) {
        super(name);
    }
    /**
     * test index generator
     */
    public void test_IndexGenerator() throws Exception {
        for (TestSyntheticStorableBuilders.TestDef test : TestSyntheticStorableBuilders.TESTS) {
            StorableIndex<StorableTestBasic> indexDesc = newStorableIndex(test);
            SyntheticStorableReferenceAccess<StorableTestBasic> access =
                IndexEntryGenerator.getIndexAccess(indexDesc);
            Class s = access.getReferenceClass();
            validateIndexEntry(test, s);
            exerciseStorable(s);
            StorableTestBasic master =
                mRepository.storageFor(StorableTestBasic.class).prepare();
            populate(master);
            master.insert();
            Storable index = mRepository.storageFor(s).prepare();
            access.copyFromMaster(index, master);
            index.insert();
            Storable indexChecker = mRepository.storageFor(s).prepare();
            access.copyFromMaster(indexChecker, master);
            assertTrue(indexChecker.tryLoad());
            StorableTestBasic masterChecker =
                mRepository.storageFor(StorableTestBasic.class).prepare();
            access.copyToMasterPrimaryKey(indexChecker, masterChecker);
            masterChecker.load();
            assertEquals(master, masterChecker);
            assertTrue(access.isConsistent(index, master));
            masterChecker =
                mRepository.storageFor(StorableTestBasic.class).prepare();
            master.copyAllProperties(masterChecker);
            assertTrue(access.isConsistent(index, masterChecker));
            masterChecker.setId(-42);
            assertFalse(access.isConsistent(index, masterChecker));
        }
    }
    /**
     * @param test
     * @return StorableInfo for this test
     */
    private StorableIndex<StorableTestBasic> newStorableIndex(TestSyntheticStorableBuilders.TestDef test) {
        StorableInfo info = StorableIntrospector.examine(test.mClass);
        final Map<String, ? extends StorableProperty> allProps = info.getAllProperties();
        TestSyntheticStorableBuilders.IndexDef[] indexDefinitions = test.mProps;
        StorableProperty[] props = new StorableProperty[indexDefinitions.length];
        Direction[] dirs = new Direction[indexDefinitions.length];
        int i = 0;
        for (TestSyntheticStorableBuilders.IndexDef p : indexDefinitions) {
            props[i] = allProps.get(p.getProp());
            dirs[i] = p.getDir();
            i++;
        }
        StorableIndex<StorableTestBasic> index = new StorableIndex<StorableTestBasic>(props, dirs);
        return index;
    }
}
  |