// This file is part of the brlaser printer driver. // // Copyright 2014 Peter De Wachter // // brlaser is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // brlaser is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with brlaser. If not, see . #include "lest.hpp" #include #include #include "tempfile.h" #include "../src/block.h" typedef std::vector vec; const lest::test specification[] = { "A block is created empty", [] { block b; EXPECT(b.empty()); }, "Adding a line makes a block no longer empty", [] { block b; b.add_line(vec{1}); EXPECT(!b.empty()); }, "A block can contain 64 lines", [] { block b; for (int i = 0; i < 64; ++i) { EXPECT(b.line_fits(1)); b.add_line(vec(1)); } EXPECT(!b.line_fits(1)); }, "A block has a size limit of about 16 kilobyte", [] { block b; for (int i = 0; i < 16; ++i) { EXPECT(b.line_fits(1000)); b.add_line(vec(1000)); } EXPECT(!b.line_fits(400)); }, "Flushing an empty block does nothing", [] { block b; tempfile f; b.flush(f.file()); EXPECT(f.data().empty()); }, "Flush() writes the lines to a file with a proper header", [] { block b; for (uint8_t n = 1; n < 6; ++n) { b.add_line(vec{n, n}); } tempfile f; b.flush(f.file()); EXPECT(( f.data() == vec{'1','2','w',0,5,1,1,2,2,3,3,4,4,5,5} )); }, "After flush() a block is empty again", [] { block b; b.add_line(vec{1}); tempfile f; b.flush(f.file()); EXPECT(b.empty()); } }; int main() { return lest::run(specification); }