Branch data Line data Source code
1 : : /****************************************************************************** 2 : : * This file is part of the cvc5 project. 3 : : * 4 : : * Copyright (c) 2009-2026 by the authors listed in the file AUTHORS 5 : : * in the top-level source directory and their institutional affiliations. 6 : : * All rights reserved. See the file COPYING in the top-level source 7 : : * directory for licensing information. 8 : : * **************************************************************************** 9 : : * 10 : : * Black box testing of the Solver class of the C++ API. 11 : : */ 12 : : 13 : : #include "base/configuration.h" 14 : : #include "test_api.h" 15 : : 16 : : namespace cvc5::internal { 17 : : 18 : : namespace test { 19 : : 20 : : class TestApiWhiteSolver : public TestApi 21 : : { 22 : : }; 23 : : 24 : 4 : TEST_F(TestApiWhiteSolver, getOp) 25 : : { 26 : 2 : DatatypeDecl consListSpec = d_tm.mkDatatypeDecl("list"); 27 : 2 : DatatypeConstructorDecl cons = d_tm.mkDatatypeConstructorDecl("cons"); 28 : 1 : cons.addSelector("head", d_tm.getIntegerSort()); 29 : 1 : cons.addSelectorSelf("tail"); 30 : 1 : consListSpec.addConstructor(cons); 31 : 2 : DatatypeConstructorDecl nil = d_tm.mkDatatypeConstructorDecl("nil"); 32 : 1 : consListSpec.addConstructor(nil); 33 : 1 : Sort consListSort = d_tm.mkDatatypeSort(consListSpec); 34 : 1 : Datatype consList = consListSort.getDatatype(); 35 : : 36 : 2 : Term nilTerm = consList.getConstructor("nil").getTerm(); 37 : 2 : Term consTerm = consList.getConstructor("cons").getTerm(); 38 : 2 : Term headTerm = consList["cons"].getSelector("head").getTerm(); 39 : : 40 : 3 : Term listnil = d_tm.mkTerm(Kind::APPLY_CONSTRUCTOR, {nilTerm}); 41 : 3 : Term listcons1 = d_tm.mkTerm(Kind::APPLY_CONSTRUCTOR, 42 : 2 : {consTerm, d_tm.mkInteger(1), listnil}); 43 : 4 : Term listhead = d_tm.mkTerm(Kind::APPLY_SELECTOR, {headTerm, listcons1}); 44 : : 45 [ - + ]: 2 : ASSERT_EQ(listnil.getOp(), 46 [ + - ]: 1 : Op(d_solver->getTermManager().d_nm, Kind::APPLY_CONSTRUCTOR)); 47 [ - + ]: 2 : ASSERT_EQ(listcons1.getOp(), 48 [ + - ]: 1 : Op(d_solver->getTermManager().d_nm, Kind::APPLY_CONSTRUCTOR)); 49 [ - + ]: 2 : ASSERT_EQ(listhead.getOp(), 50 [ + - ]: 1 : Op(d_solver->getTermManager().d_nm, Kind::APPLY_SELECTOR)); 51 [ + - ][ + - ]: 1 : } [ + - ][ + - ] [ + - ][ + - ] [ + - ][ + - ] [ + - ][ + - ] [ + - ] 52 : : 53 : : } // namespace test 54 : : } // namespace cvc5::internal