3
// (C) Copyright Mateusz Loskot 2008, mateusz@loskot.net
4
// Distributed under the BSD License
5
// (See accompanying file LICENSE.txt or copy at
6
// http://www.opensource.org/licenses/bsd-license.php)
8
#include <liblas/lasfile.hpp>
9
#include <liblas/lasheader.hpp>
10
#include <liblas/lasreader.hpp>
11
#include <liblas/laswriter.hpp>
12
#include <tut/tut.hpp>
15
#include "liblas_test.hpp"
26
: tmpfile_(g_test_data_path + "//lasfile_tmp.las"),
27
file10_(g_test_data_path + "//TO_core_last_clip.las")
32
// remove temporary file after each test case
33
std::remove(tmpfile_.c_str());
37
typedef test_group<lasfile_data> tg;
38
typedef tg::object to;
40
tg test_group_lasfile("liblas::LASFile");
42
// Test default constructor
48
ensure(file.IsNull());
51
// Test custom constructor
56
liblas::LASFile file(file10_);
57
ensure_not(file.IsNull());
59
ensure_equals(file.GetName(), file10_);
60
ensure_equals(file.GetMode(), liblas::LASFile::eRead);
62
liblas::LASHeader const& header1 = file.GetHeader();
63
test_file10_header(header1);
65
liblas::LASReader& reader = file.GetReader();
66
liblas::LASHeader const& header2 = reader.GetHeader();
67
test_file10_header(header2);
71
liblas::LASWriter& writer = file.GetWriter();
72
ensure_equals(writer.GetVersion(), liblas::eLASVersion10);
73
ensure("std::runtime_error not thrown", false);
75
catch (std::runtime_error const& e)
77
ensure_equals(std::string(e.what()).substr(0, 6), std::string("Writer"));
81
// Test custom constructor
86
liblas::LASHeader header;
90
liblas::LASFile file(tmpfile_, header, liblas::LASFile::eRead);
91
ensure_equals(file.GetName(), tmpfile_);
92
ensure("std::runtime_error not thrown", false);
94
catch (std::runtime_error const& e)
96
ensure_equals(std::string(e.what()),
97
std::string("File mode must be eWrite or eAppend"));
101
// Test custom constructor
106
liblas::LASHeader header;
107
liblas::LASFile file(tmpfile_, header, liblas::LASFile::eWrite);
108
ensure_not(file.IsNull());
109
ensure_equals(file.GetName(), tmpfile_);
110
ensure_equals(file.GetMode(), liblas::LASFile::eWrite);
112
liblas::LASHeader const& header1 = file.GetHeader();
113
test_default_header(header1);
115
liblas::LASWriter& writer = file.GetWriter();
116
liblas::LASHeader const& header2 = writer.GetHeader();
117
test_default_header(header2);
121
liblas::LASReader& reader = file.GetReader();
122
ensure_equals(reader.GetVersion(), liblas::eLASVersion10);
123
ensure("std::runtime_error not thrown", false);
125
catch (std::runtime_error const& e)
127
ensure_equals(std::string(e.what()).substr(0, 6), std::string("Reader"));
131
// Test copy constructor on default initialized object
136
liblas::LASFile file;
137
ensure(file.IsNull());
139
liblas::LASFile file2(file);
140
ensure(file2.IsNull());
143
// Test assignment operator
148
liblas::LASFile file;
149
ensure(file.IsNull());
151
liblas::LASFile file2;
153
ensure(file2.IsNull());
156
// Test copy constructor on read-only file
161
liblas::LASFile file(file10_);
163
ensure_not(file.IsNull());
164
ensure_equals(file.GetName(), file10_);
165
ensure_equals(file.GetMode(), liblas::LASFile::eRead);
167
liblas::LASHeader const& header1 = file.GetHeader();
168
test_file10_header(header1);
170
liblas::LASFile file2(file);
172
ensure_not(file2.IsNull());
173
ensure_equals(file2.GetName(), file10_);
174
ensure_equals(file2.GetMode(), liblas::LASFile::eRead);
176
liblas::LASHeader const& header2 = file2.GetHeader();
177
test_file10_header(header2);
180
// Test assignment operator on read-only file
185
liblas::LASFile file2;
188
liblas::LASFile file(file10_);
190
ensure_not(file.IsNull());
191
ensure_equals(file.GetName(), file10_);
192
ensure_equals(file.GetMode(), liblas::LASFile::eRead);
194
liblas::LASHeader const& header1 = file.GetHeader();
195
test_file10_header(header1);
199
// file object is deallocated here
202
ensure_not(file2.IsNull());
203
ensure_equals(file2.GetName(), file10_);
204
ensure_equals(file2.GetMode(), liblas::LASFile::eRead);
206
liblas::LASHeader const& header1 = file2.GetHeader();
207
test_file10_header(header1);
210
// Test assignment operator on write-only file
215
liblas::LASHeader header;
216
liblas::LASFile file(tmpfile_, header, liblas::LASFile::eWrite);
218
ensure_not(file.IsNull());
219
ensure_equals(file.GetName(), tmpfile_);
220
ensure_equals(file.GetMode(), liblas::LASFile::eWrite);
222
liblas::LASHeader const& header1 = file.GetHeader();
223
test_default_header(header1);
225
liblas::LASFile file2(file);
227
ensure_not(file2.IsNull());
228
ensure_equals(file2.GetName(), tmpfile_);
229
ensure_equals(file2.GetMode(), liblas::LASFile::eWrite);
231
liblas::LASHeader const& header2 = file2.GetHeader();
232
test_default_header(header2);
235
// Test assignment operator on write-only file
240
liblas::LASFile file2;
243
liblas::LASHeader header;
244
liblas::LASFile file(tmpfile_, header, liblas::LASFile::eWrite);
246
ensure_not(file.IsNull());
247
ensure_equals(file.GetName(), tmpfile_);
248
ensure_equals(file.GetMode(), liblas::LASFile::eWrite);
250
liblas::LASHeader const& header1 = file.GetHeader();
251
test_default_header(header1);
255
// file object is deallocated here
258
ensure_not(file2.IsNull());
259
ensure_equals(file2.GetName(), tmpfile_);
260
ensure_equals(file2.GetMode(), liblas::LASFile::eWrite);
262
liblas::LASHeader const& header1 = file2.GetHeader();
263
test_default_header(header1);