1f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// fst_test.cc 2f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 3f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// Licensed under the Apache License, Version 2.0 (the "License"); 4f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// you may not use this file except in compliance with the License. 5f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// You may obtain a copy of the License at 6f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// 7f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// http://www.apache.org/licenses/LICENSE-2.0 8f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// 9f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// Unless required by applicable law or agreed to in writing, software 10f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// distributed under the License is distributed on an "AS IS" BASIS, 11f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// See the License for the specific language governing permissions and 13f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// limitations under the License. 14f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// 15f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// Copyright 2005-2010 Google, Inc. 16f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// Author: riley@google.com (Michael Riley) 17f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// 18f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// \file 19f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// Regression test for FST classes. 20f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 21f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson#include "./fst_test.h" 22f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 23f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson#include <fst/compact-fst.h> 24f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson#include <fst/const-fst.h> 25f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson#include <fst/edit-fst.h> 26f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson#include <fst/matcher-fst.h> 27f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 28f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 29f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonnamespace fst { 30f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 31f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// A user-defined arc type. 32f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonstruct CustomArc { 33f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson typedef short Label; 34f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson typedef ProductWeight<TropicalWeight, LogWeight> Weight; 35f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson typedef int64 StateId; 36f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 37f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson CustomArc(Label i, Label o, Weight w, StateId s) : 38f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson ilabel(i), olabel(o), weight(w), nextstate(s) {} 39f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson CustomArc() {} 40f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 41f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson static const string &Type() { // Arc type name 42f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson static const string type = "my"; 43f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson return type; 44f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson } 45f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 46f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson Label ilabel; // Transition input label 47f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson Label olabel; // Transition output label 48f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson Weight weight; // Transition weight 49f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson StateId nextstate; // Transition destination state 50f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson}; 51f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 52f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 53f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson// A user-defined compactor for test FST. 54f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsontemplate <class A> 55f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonclass CustomCompactor { 56f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson public: 57f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson typedef A Arc; 58f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson typedef typename A::Label Label; 59f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson typedef typename A::StateId StateId; 60f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson typedef typename A::Weight Weight; 61f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson typedef pair<Label, Weight> Element; 62f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 63f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson Element Compact(StateId s, const A &arc) const { 64f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson return make_pair(arc.ilabel, arc.weight); 65f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson } 66f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 67f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson Arc Expand(StateId s, const Element &p, uint32 f = kArcValueFlags) const { 68f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson return p.first == kNoLabel ? 69f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson Arc(kNoLabel, kNoLabel, p.second, kNoStateId) : 70f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson Arc(p.first, 0, p.second, s); 71f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson } 72f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 73f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson ssize_t Size() const { return -1;} 74f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 75f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson uint64 Properties() const { return 0ULL;} 76f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 77f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson bool Compatible(const Fst<A> &fst) const { 78f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson return true; 79f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson } 80f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 81f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson static const string &Type() { 82f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson static const string type = "my"; 83f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson return type; 84f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson } 85f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 86f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson bool Write(ostream &strm) const { return true; } 87f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 88f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson static CustomCompactor *Read(istream &strm) { 89f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson return new CustomCompactor; 90f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson } 91f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson}; 92f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 93f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 94f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian HodsonREGISTER_FST(VectorFst, CustomArc); 95f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian HodsonREGISTER_FST(ConstFst, CustomArc); 96f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonstatic fst::FstRegisterer< 97f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson CompactFst<StdArc, CustomCompactor<StdArc> > > 98f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian HodsonCompactFst_StdArc_CustomCompactor_registerer; 99f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonstatic fst::FstRegisterer< 100f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson CompactFst<CustomArc, CustomCompactor<CustomArc> > > 101f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian HodsonCompactFst_CustomArc_CustomCompactor_registerer; 102f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonstatic fst::FstRegisterer<ConstFst<StdArc, uint16> > 103f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian HodsonConstFst_StdArc_uint16_registerer; 104f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonstatic fst::FstRegisterer< 105f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson CompactFst<StdArc, CustomCompactor<StdArc>, uint16> > 106f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian HodsonCompactFst_StdArc_CustomCompactor_uint16_registerer; 107f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 108f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson} // namespace fst 109f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 110f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 111f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonusing fst::FstTester; 112f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonusing fst::VectorFst; 113f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonusing fst::ConstFst; 114f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonusing fst::MatcherFst; 115f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonusing fst::CompactFst; 116f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonusing fst::Fst; 117f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonusing fst::StdArc; 118f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonusing fst::CustomArc; 119f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonusing fst::CustomCompactor; 120f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonusing fst::StdArcLookAheadFst; 121f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonusing fst::EditFst; 122f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 123f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodsonint main(int argc, char **argv) { 124f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson FLAGS_fst_verify_properties = true; 125f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std::set_new_handler(FailedNewHandler); 126dfd8b8327b93660601d016cdc6f29f433b45a8d8Alexander Gutkin SET_FLAGS(argv[0], &argc, &argv, true); 127f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 128f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson // VectorFst<StdArc> tests 129f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson { 130f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson FstTester< VectorFst<StdArc> > std_vector_tester; 131f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_vector_tester.TestBase(); 132f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_vector_tester.TestExpanded(); 133f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_vector_tester.TestAssign(); 134f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_vector_tester.TestCopy(); 135f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_vector_tester.TestIO(); 136f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_vector_tester.TestMutable(); 137f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson } 138f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 139f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson // ConstFst<StdArc> tests 140f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson { 141f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson FstTester< ConstFst<StdArc> > std_const_tester; 142f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_const_tester.TestBase(); 143f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_const_tester.TestExpanded(); 144f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_const_tester.TestCopy(); 145f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_const_tester.TestIO(); 146f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson } 147f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 148f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson // CompactFst<StdArc, CustomCompactor<StdArc> > 149f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson { 150f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson FstTester< CompactFst<StdArc, CustomCompactor<StdArc> > > 151f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_compact_tester; 152f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_compact_tester.TestBase(); 153f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_compact_tester.TestExpanded(); 154f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_compact_tester.TestCopy(); 155f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_compact_tester.TestIO(); 156f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson } 157f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 158f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson // VectorFst<CustomArc> tests 159f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson { 160f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson FstTester< VectorFst<CustomArc> > std_vector_tester; 161f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_vector_tester.TestBase(); 162f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_vector_tester.TestExpanded(); 163f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_vector_tester.TestAssign(); 164f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_vector_tester.TestCopy(); 165f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_vector_tester.TestIO(); 166f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_vector_tester.TestMutable(); 167f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson } 168f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 169f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson // ConstFst<CustomArc> tests 170f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson { 171f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson FstTester< ConstFst<CustomArc> > std_const_tester; 172f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_const_tester.TestBase(); 173f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_const_tester.TestExpanded(); 174f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_const_tester.TestCopy(); 175f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_const_tester.TestIO(); 176f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson } 177f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 178f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson // CompactFst<CustomArc, CustomCompactor<CustomArc> > 179f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson { 180f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson FstTester< CompactFst<CustomArc, CustomCompactor<CustomArc> > > 181f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_compact_tester; 182f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_compact_tester.TestBase(); 183f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_compact_tester.TestExpanded(); 184f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_compact_tester.TestCopy(); 185f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_compact_tester.TestIO(); 186f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson } 187f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 188f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson // ConstFst<StdArc, uint16> tests 189f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson { 190f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson FstTester< ConstFst<StdArc, uint16> > std_const_tester; 191f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_const_tester.TestBase(); 192f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_const_tester.TestExpanded(); 193f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_const_tester.TestCopy(); 194f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_const_tester.TestIO(); 195f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson } 196f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 197f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson // CompactFst<StdArc, CustomCompactor<StdArc>, uint16> 198f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson { 199f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson FstTester< CompactFst<StdArc, CustomCompactor<StdArc>, uint16> > 200f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_compact_tester; 201f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_compact_tester.TestBase(); 202f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_compact_tester.TestExpanded(); 203f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_compact_tester.TestCopy(); 204f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_compact_tester.TestIO(); 205f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson } 206f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 207f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson // FstTester<StdArcLookAheadFst> 208f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson { 209f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson FstTester<StdArcLookAheadFst> std_matcher_tester; 210f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_matcher_tester.TestBase(); 211f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_matcher_tester.TestExpanded(); 212f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_matcher_tester.TestCopy(); 213f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson } 214f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 215f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson // EditFst<StdArc> tests 216f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson { 217f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson FstTester< EditFst<StdArc> > std_edit_tester; 218f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_edit_tester.TestBase(); 219f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_edit_tester.TestExpanded(); 220f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_edit_tester.TestAssign(); 221f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_edit_tester.TestCopy(); 222f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson std_edit_tester.TestMutable(); 223f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson } 224f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 225f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson cout << "PASS" << endl; 226f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson 227f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson return 0; 228f4c12fce1ee58e670f9c3fce46c40296ba9ee8a2Ian Hodson} 229