filegdb 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +18 -0
  3. data/.travis.yml +4 -0
  4. data/Gemfile +3 -0
  5. data/LICENSE +28 -0
  6. data/Makefile +12 -0
  7. data/README.md +27 -0
  8. data/Rakefile +24 -0
  9. data/ext/filegdb/base.hpp +126 -0
  10. data/ext/filegdb/extconf.rb +13 -0
  11. data/ext/filegdb/filegdb.cpp +27 -0
  12. data/ext/filegdb/filegdb.hpp +44 -0
  13. data/ext/filegdb/filegdb/include/FileGDBAPI.h +30 -0
  14. data/ext/filegdb/filegdb/include/FileGDBCore.h +226 -0
  15. data/ext/filegdb/filegdb/include/Geodatabase.h +291 -0
  16. data/ext/filegdb/filegdb/include/GeodatabaseManagement.h +79 -0
  17. data/ext/filegdb/filegdb/include/Raster.h +101 -0
  18. data/ext/filegdb/filegdb/include/Row.h +336 -0
  19. data/ext/filegdb/filegdb/include/Table.h +296 -0
  20. data/ext/filegdb/filegdb/include/Util.h +936 -0
  21. data/ext/filegdb/filegdb/include/make.include +98 -0
  22. data/ext/filegdb/filegdb/lib/libFileGDBAPI.dylib +0 -0
  23. data/ext/filegdb/filegdb/lib/libFileGDBAPI.so +0 -0
  24. data/ext/filegdb/filegdb/lib/libfgdbunixrtl.dylib +0 -0
  25. data/ext/filegdb/filegdb/lib/libfgdbunixrtl.so +0 -0
  26. data/ext/filegdb/geodatabase.cpp +529 -0
  27. data/ext/filegdb/geodatabase.hpp +53 -0
  28. data/ext/filegdb/multi_point_shape_buffer.cpp +254 -0
  29. data/ext/filegdb/multi_point_shape_buffer.hpp +35 -0
  30. data/ext/filegdb/point.cpp +44 -0
  31. data/ext/filegdb/point.hpp +31 -0
  32. data/ext/filegdb/point_shape_buffer.cpp +162 -0
  33. data/ext/filegdb/point_shape_buffer.hpp +32 -0
  34. data/ext/filegdb/row.cpp +222 -0
  35. data/ext/filegdb/row.hpp +37 -0
  36. data/ext/filegdb/shape_buffer.cpp +19 -0
  37. data/ext/filegdb/shape_buffer.hpp +20 -0
  38. data/ext/filegdb/shape_buffer_base.hpp +33 -0
  39. data/ext/filegdb/table.cpp +65 -0
  40. data/ext/filegdb/table.hpp +29 -0
  41. data/ext/filegdb/util.cpp +16 -0
  42. data/filegdb.gemspec +23 -0
  43. data/lib/filegdb.rb +2 -0
  44. data/lib/filegdb/version.rb +3 -0
  45. data/spec/data/domain_definition.xml +22 -0
  46. data/spec/data/domain_definition_altered.xml +26 -0
  47. data/spec/data/feature_dataset_definition.xml +25 -0
  48. data/spec/data/table_definition.xml +177 -0
  49. data/spec/filegdb_spec.rb +36 -0
  50. data/spec/geodatabase_spec.rb +107 -0
  51. data/spec/multi_point_shape_buffer_spec.rb +58 -0
  52. data/spec/point_shape_buffer_spec.rb +39 -0
  53. data/spec/row_spec.rb +76 -0
  54. data/spec/spec_helper.rb +41 -0
  55. metadata +153 -0
@@ -0,0 +1,16 @@
1
+ #include "filegdb.hpp"
2
+
3
+ std::wstring to_wstring(const char *input) {
4
+ std::string converted(input);
5
+ return std::wstring(converted.begin(), converted.end());
6
+ }
7
+
8
+ const char* to_char_array(std::wstring str) {
9
+ return std::string(str.begin(), str.end()).c_str();
10
+ }
11
+
12
+ const char *fgdb_error_string(fgdbError hr) {
13
+ wstring errorText;
14
+ ErrorInfo::GetErrorDescription(hr, errorText);
15
+ return to_char_array(errorText);
16
+ }
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/filegdb/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Zac McCormick"]
6
+ gem.email = ["zac.mccormick@gmail.com"]
7
+ gem.description = %q{ESRI FileGDB bindings for ruby}
8
+ gem.summary = %q{ESRI FileGDB bindings for ruby. Currently contains native extensions for FileGDB API 1.3}
9
+ gem.homepage = "https://github.com/spatialnetworks/filegdb-ruby"
10
+ gem.licenses = ['BSD']
11
+
12
+ gem.files = `git ls-files`.split($\)
13
+ gem.extensions = ['ext/filegdb/extconf.rb']
14
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
15
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
16
+ gem.name = "filegdb"
17
+ gem.require_paths = ['lib', 'ext']
18
+ gem.version = FileGDB::VERSION
19
+
20
+ gem.add_development_dependency 'rake', ['>= 0']
21
+ gem.add_development_dependency 'rake-compiler', ['>= 0']
22
+ gem.add_development_dependency 'rspec', ['>= 0']
23
+ end
@@ -0,0 +1,2 @@
1
+ require 'filegdb/version'
2
+ require 'filegdb/filegdb'
@@ -0,0 +1,3 @@
1
+ module FileGDB
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,22 @@
1
+ <esri:Domain xsi:type='esri:CodedValueDomain' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:esri='http://www.esri.com/schemas/ArcGIS/10.1'>
2
+ <DomainName>RoadSurfaceType</DomainName>
3
+ <FieldType>esriFieldTypeInteger</FieldType>
4
+ <MergePolicy>esriMPTDefaultValue</MergePolicy>
5
+ <SplitPolicy>esriSPTDefaultValue</SplitPolicy>
6
+ <Description>The road surface type</Description>
7
+ <Owner></Owner>
8
+ <CodedValues xsi:type='esri:ArrayOfCodedValue'>
9
+ <CodedValue xsi:type='esri:CodedValue'>
10
+ <Name>Asphalt</Name>
11
+ <Code xsi:type='xs:int'>1</Code>
12
+ </CodedValue>
13
+ <CodedValue xsi:type='esri:CodedValue'>
14
+ <Name>Gravel</Name>
15
+ <Code xsi:type='xs:int'>2</Code>
16
+ </CodedValue>
17
+ <CodedValue xsi:type='esri:CodedValue'>
18
+ <Name>Dirt</Name>
19
+ <Code xsi:type='xs:int'>4</Code>
20
+ </CodedValue>
21
+ </CodedValues>
22
+ </esri:Domain>
@@ -0,0 +1,26 @@
1
+ <esri:Domain xsi:type='esri:CodedValueDomain' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:esri='http://www.esri.com/schemas/ArcGIS/10.1'>
2
+ <DomainName>RoadSurfaceType</DomainName>
3
+ <FieldType>esriFieldTypeInteger</FieldType>
4
+ <MergePolicy>esriMPTDefaultValue</MergePolicy>
5
+ <SplitPolicy>esriSPTDefaultValue</SplitPolicy>
6
+ <Description>The road surface type</Description>
7
+ <Owner></Owner>
8
+ <CodedValues xsi:type='esri:ArrayOfCodedValue'>
9
+ <CodedValue xsi:type='esri:CodedValue'>
10
+ <Name>Asphalt</Name>
11
+ <Code xsi:type='xs:int'>1</Code>
12
+ </CodedValue>
13
+ <CodedValue xsi:type='esri:CodedValue'>
14
+ <Name>Gravel</Name>
15
+ <Code xsi:type='xs:int'>2</Code>
16
+ </CodedValue>
17
+ <CodedValue xsi:type='esri:CodedValue'>
18
+ <Name>Mud</Name>
19
+ <Code xsi:type='xs:int'>3</Code>
20
+ </CodedValue>
21
+ <CodedValue xsi:type='esri:CodedValue'>
22
+ <Name>Dirt</Name>
23
+ <Code xsi:type='xs:int'>4</Code>
24
+ </CodedValue>
25
+ </CodedValues>
26
+ </esri:Domain>
@@ -0,0 +1,25 @@
1
+ <esri:DataElement xsi:type='esri:DEFeatureDataset' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:esri='http://www.esri.com/schemas/ArcGIS/10.1'>
2
+ <CatalogPath>\Test</CatalogPath>
3
+ <Name>TestFeatureDataset</Name>
4
+ <ChildrenExpanded>false</ChildrenExpanded>
5
+ <DatasetType>esriDTFeatureDataset</DatasetType>
6
+ <Versioned>false</Versioned>
7
+ <CanVersion>false</CanVersion>
8
+ <Extent xsi:nil="true"/>
9
+ <SpatialReference xsi:type="esri:GeographicCoordinateSystem">
10
+ <WKT>GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]</WKT>
11
+ <XOrigin>-399.99999999999989</XOrigin>
12
+ <YOrigin>-399.99999999999989</YOrigin>
13
+ <XYScale>11258999068426.24</XYScale>
14
+ <ZOrigin>-100000</ZOrigin>
15
+ <ZScale>10000</ZScale>
16
+ <MOrigin>-100000</MOrigin>
17
+ <MScale>10000</MScale>
18
+ <XYTolerance>8.9831528411952133e-009</XYTolerance>
19
+ <ZTolerance>0.001</ZTolerance>
20
+ <MTolerance>0.001</MTolerance>
21
+ <HighPrecision>true</HighPrecision>
22
+ <LeftLongitude>-180</LeftLongitude>
23
+ <WKID>4326</WKID>
24
+ </SpatialReference>
25
+ </esri:DataElement>
@@ -0,0 +1,177 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <esri:DataElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:esri="http://www.esri.com/schemas/ArcGIS/10.1" xsi:type="esri:DEFeatureClass">
3
+ <CatalogPath>\Table</CatalogPath>
4
+ <Name>TestTable</Name>
5
+ <ChildrenExpanded>false</ChildrenExpanded>
6
+ <DatasetType>esriDTFeatureClass</DatasetType>
7
+ <Versioned>false</Versioned>
8
+ <CanVersion>false</CanVersion>
9
+ <ConfigurationKeyword/>
10
+ <HasOID>true</HasOID>
11
+ <OIDFieldName>OBJECTID</OIDFieldName>
12
+ <Fields xsi:type="esri:Fields">
13
+ <FieldArray xsi:type="esri:ArrayOfField">
14
+ <Field xsi:type="esri:Field">
15
+ <Name>OBJECTID</Name>
16
+ <Type>esriFieldTypeOID</Type>
17
+ <IsNullable>false</IsNullable>
18
+ <Length>4</Length>
19
+ <Precision>0</Precision>
20
+ <Scale>0</Scale>
21
+ <Required>true</Required>
22
+ <Editable>false</Editable>
23
+ <AliasName>OBJECTID</AliasName>
24
+ <ModelName>OBJECTID</ModelName>
25
+ </Field>
26
+ <Field xsi:type="esri:Field">
27
+ <Name>geometry</Name>
28
+ <Type>esriFieldTypeGeometry</Type>
29
+ <IsNullable>true</IsNullable>
30
+ <Length>0</Length>
31
+ <Precision>0</Precision>
32
+ <Scale>0</Scale>
33
+ <Required>true</Required>
34
+ <GeometryDef xsi:type="esri:GeometryDef">
35
+ <AvgNumPoints>0</AvgNumPoints>
36
+ <GeometryType>esriGeometryPoint</GeometryType>
37
+ <HasM>false</HasM>
38
+ <HasZ>false</HasZ>
39
+ <SpatialReference xsi:type="esri:GeographicCoordinateSystem">
40
+ <WKT>GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]</WKT>
41
+ <XOrigin>-399.99999999999989</XOrigin>
42
+ <YOrigin>-399.99999999999989</YOrigin>
43
+ <XYScale>11258999068426.24</XYScale>
44
+ <ZOrigin>-100000</ZOrigin>
45
+ <ZScale>10000</ZScale>
46
+ <MOrigin>-100000</MOrigin>
47
+ <MScale>10000</MScale>
48
+ <XYTolerance>8.9831528411952133e-009</XYTolerance>
49
+ <ZTolerance>0.001</ZTolerance>
50
+ <MTolerance>0.001</MTolerance>
51
+ <HighPrecision>true</HighPrecision>
52
+ <LeftLongitude>-180</LeftLongitude>
53
+ <WKID>4326</WKID>
54
+ </SpatialReference>
55
+ <GridSize0>0</GridSize0>
56
+ </GeometryDef>
57
+ <AliasName>geometry</AliasName>
58
+ <ModelName>geometry</ModelName>
59
+ </Field>
60
+ <Field xsi:type="esri:Field">
61
+ <Name>string_field</Name>
62
+ <Type>esriFieldTypeString</Type>
63
+ <IsNullable>true</IsNullable>
64
+ <Length>4000</Length>
65
+ <Precision>0</Precision>
66
+ <Scale>0</Scale>
67
+ <AliasName>string_field</AliasName>
68
+ <ModelName>string_field</ModelName>
69
+ </Field>
70
+ </FieldArray>
71
+ </Fields>
72
+ <Indexes xsi:type="esri:Indexes">
73
+ <IndexArray xsi:type="esri:ArrayOfIndex">
74
+ <Index xsi:type="esri:Index">
75
+ <Name>FDO_OBJECTID</Name>
76
+ <IsUnique>true</IsUnique>
77
+ <IsAscending>true</IsAscending>
78
+ <Fields xsi:type="esri:Fields">
79
+ <FieldArray xsi:type="esri:ArrayOfField">
80
+ <Field xsi:type="esri:Field">
81
+ <Name>OBJECTID</Name>
82
+ <Type>esriFieldTypeOID</Type>
83
+ <IsNullable>false</IsNullable>
84
+ <Length>4</Length>
85
+ <Precision>0</Precision>
86
+ <Scale>0</Scale>
87
+ <Required>true</Required>
88
+ <Editable>false</Editable>
89
+ <AliasName>OBJECTID</AliasName>
90
+ <ModelName>OBJECTID</ModelName>
91
+ </Field>
92
+ </FieldArray>
93
+ </Fields>
94
+ </Index>
95
+ <Index xsi:type="esri:Index">
96
+ <Name>FDO_SHAPE</Name>
97
+ <IsUnique>false</IsUnique>
98
+ <IsAscending>true</IsAscending>
99
+ <Fields xsi:type="esri:Fields">
100
+ <FieldArray xsi:type="esri:ArrayOfField">
101
+ <Field xsi:type="esri:Field">
102
+ <Name>geometry</Name>
103
+ <Type>esriFieldTypeGeometry</Type>
104
+ <IsNullable>true</IsNullable>
105
+ <Length>0</Length>
106
+ <Precision>0</Precision>
107
+ <Scale>0</Scale>
108
+ <Required>true</Required>
109
+ <GeometryDef xsi:type="esri:GeometryDef">
110
+ <AvgNumPoints>0</AvgNumPoints>
111
+ <GeometryType>esriGeometryPoint</GeometryType>
112
+ <HasM>false</HasM>
113
+ <HasZ>false</HasZ>
114
+ <SpatialReference xsi:type="esri:GeographicCoordinateSystem">
115
+ <WKT>GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]</WKT>
116
+ <XOrigin>-399.99999999999989</XOrigin>
117
+ <YOrigin>-399.99999999999989</YOrigin>
118
+ <XYScale>11258999068426.24</XYScale>
119
+ <ZOrigin>-100000</ZOrigin>
120
+ <ZScale>10000</ZScale>
121
+ <MOrigin>-100000</MOrigin>
122
+ <MScale>10000</MScale>
123
+ <XYTolerance>8.9831528411952133e-009</XYTolerance>
124
+ <ZTolerance>0.001</ZTolerance>
125
+ <MTolerance>0.001</MTolerance>
126
+ <HighPrecision>true</HighPrecision>
127
+ <LeftLongitude>-180</LeftLongitude>
128
+ <WKID>4326</WKID>
129
+ </SpatialReference>
130
+ <GridSize0>0</GridSize0>
131
+ </GeometryDef>
132
+ <AliasName>geometry</AliasName>
133
+ <ModelName>geometry</ModelName>
134
+ </Field>
135
+ </FieldArray>
136
+ </Fields>
137
+ </Index>
138
+ </IndexArray>
139
+ </Indexes>
140
+ <CLSID>{52353152-891A-11D0-BEC6-00805F7C4268}</CLSID>
141
+ <EXTCLSID/>
142
+ <RelationshipClassNames xsi:type="esri:Names"/>
143
+ <AliasName>TableAlias</AliasName>
144
+ <ModelName/>
145
+ <HasGlobalID>false</HasGlobalID>
146
+ <GlobalIDFieldName/>
147
+ <RasterFieldName/>
148
+ <ExtensionProperties xsi:type="esri:PropertySet">
149
+ <PropertyArray xsi:type="esri:ArrayOfPropertySetProperty"/>
150
+ </ExtensionProperties>
151
+ <ControllerMemberships xsi:type="esri:ArrayOfControllerMembership"/>
152
+ <FeatureType>esriFTSimple</FeatureType>
153
+ <ShapeType>esriGeometryPoint</ShapeType>
154
+ <ShapeFieldName>geometry</ShapeFieldName>
155
+ <HasM>false</HasM>
156
+ <HasZ>false</HasZ>
157
+ <HasSpatialIndex>true</HasSpatialIndex>
158
+ <AreaFieldName/>
159
+ <LengthFieldName/>
160
+ <Extent xsi:nil="true"/>
161
+ <SpatialReference xsi:type="esri:GeographicCoordinateSystem">
162
+ <WKT>GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]</WKT>
163
+ <XOrigin>-399.99999999999989</XOrigin>
164
+ <YOrigin>-399.99999999999989</YOrigin>
165
+ <XYScale>11258999068426.24</XYScale>
166
+ <ZOrigin>-100000</ZOrigin>
167
+ <ZScale>10000</ZScale>
168
+ <MOrigin>-100000</MOrigin>
169
+ <MScale>10000</MScale>
170
+ <XYTolerance>8.9831528411952133e-009</XYTolerance>
171
+ <ZTolerance>0.001</ZTolerance>
172
+ <MTolerance>0.001</MTolerance>
173
+ <HighPrecision>true</HighPrecision>
174
+ <LeftLongitude>-180</LeftLongitude>
175
+ <WKID>4326</WKID>
176
+ </SpatialReference>
177
+ </esri:DataElement>
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe "FileGDB" do
4
+ before(:all) do
5
+ delete_database rescue nil
6
+ end
7
+
8
+ after(:each) do
9
+ delete_database rescue nil
10
+ end
11
+
12
+ after(:all) do
13
+ delete_database rescue nil
14
+ end
15
+
16
+ it 'creates a new gdb' do
17
+ db = create_database
18
+ db.should_not be_nil
19
+ db.close
20
+ end
21
+
22
+ it 'opens an existing gdb' do
23
+ db = create_database
24
+ db.close
25
+ db = open_database
26
+ db.should_not be_nil
27
+ db.close
28
+ end
29
+
30
+ it 'creates a new table' do
31
+ db = create_database
32
+ table = db.create_table('', table_definition)
33
+ table.should_not be_nil
34
+ db.close
35
+ end
36
+ end
@@ -0,0 +1,107 @@
1
+ require 'spec_helper'
2
+
3
+ describe "FileGDB" do
4
+ before(:all) do
5
+ delete_database rescue nil
6
+ end
7
+
8
+ before(:each) do
9
+ delete_database rescue nil
10
+ @db = create_database
11
+ @table = @db.create_table('', table_definition)
12
+ end
13
+
14
+ after(:each) do
15
+ delete_database rescue nil
16
+ end
17
+
18
+ after(:all) do
19
+ delete_database rescue nil
20
+ end
21
+
22
+ it 'gets the dataset types' do
23
+ @db.get_dataset_types.should have(32).items
24
+ end
25
+
26
+ it 'gets the dataset relationship types' do
27
+ @db.get_dataset_relationship_types.should have(16).items
28
+ end
29
+
30
+ it 'gets the child datasets' do
31
+ @db.get_child_datasets('', '').should have(0).items
32
+ end
33
+
34
+ it 'gets the related datasets' do
35
+ @db.get_related_datasets('', '', '').should have(0).items
36
+ end
37
+
38
+ it 'gets the dataset definition' do
39
+ @db.get_dataset_definition('\\TestTable', 'Table').length.should eq(7188)
40
+ end
41
+
42
+ it 'gets the dataset documentation' do
43
+ lambda { @db.get_dataset_documentation('\\TestTable', 'Table') }.should raise_error
44
+ end
45
+
46
+ it 'gets the child dataset definitions' do
47
+ @db.get_child_dataset_definitions('\\TestTable', 'Table').should have(0).items
48
+ end
49
+
50
+ it 'gets the related dataset definitions' do
51
+ @db.get_related_dataset_definitions('\\TestTable', '', 'Table').should have(0).items
52
+ end
53
+
54
+ it 'creates a feature dataset' do
55
+ lambda { @db.create_feature_dataset(feature_dataset_definition) }.should_not raise_error
56
+ end
57
+
58
+ it 'closes a table' do
59
+ lambda { @db.close_table(@table) }.should_not raise_error
60
+ end
61
+
62
+ it 'renames a table' do
63
+ lambda { @db.rename('\\TestTable', 'Table', 'TestTableNew') }.should_not raise_error
64
+ @db.get_dataset_definition('\\TestTableNew', 'Table').length.should eq(5839)
65
+ end
66
+
67
+ it 'moves a table' do
68
+ lambda { @db.move('TestTable', 'TestTable2') }.should raise_error
69
+ end
70
+
71
+ it 'deletes a table' do
72
+ @db.close_table(@table)
73
+ lambda { @db.delete('\\TestTable', 'Table') }.should_not raise_error
74
+ end
75
+
76
+ it 'creates a domain' do
77
+ lambda { @db.create_domain(domain_definition) }.should_not raise_error
78
+ end
79
+
80
+ it 'alters a domain' do
81
+ lambda { @db.create_domain(domain_definition) }.should_not raise_error
82
+ lambda { @db.alter_domain(domain_definition_altered) }.should_not raise_error
83
+ end
84
+
85
+ it 'deletes a domain' do
86
+ lambda { @db.create_domain(domain_definition) }.should_not raise_error
87
+ lambda { @db.delete_domain('RoadSurfaceType') }.should_not raise_error
88
+ end
89
+
90
+ it 'fails to delete a domain that does not exist' do
91
+ lambda { @db.create_domain(domain_definition) }.should_not raise_error
92
+ lambda { @db.delete_domain('ThisDomainDoesNotExist') }.should raise_error
93
+ end
94
+
95
+ it 'gets the domain definition' do
96
+ lambda { @db.create_domain(domain_definition) }.should_not raise_error
97
+ @db.get_domain_definition('RoadSurfaceType').should_not be_nil
98
+ end
99
+
100
+ it 'fails to get the domain definition when the domain does not exist' do
101
+ lambda { @db.get_domain_definition('ThisDomainDoesNotExist') }.should raise_error
102
+ end
103
+
104
+ it 'gets the query name of a table' do
105
+ @db.get_query_name('TestTable').should eq('TestTable')
106
+ end
107
+ end