コード例 #1
0
def test_is_null(solver):
  # creating empty (null) objects.
  dtypeSpec = DatatypeDecl(solver)
  cons = DatatypeConstructorDecl(solver)
  d = Datatype(solver)
  consConstr = DatatypeConstructor(solver)
  sel = DatatypeSelector(solver)

  # verifying that the objects are considered null.
  assert dtypeSpec.isNull()
  assert cons.isNull()
  assert d.isNull()
  assert consConstr.isNull()
  assert sel.isNull()

  # changing the objects to be non-null
  dtypeSpec = solver.mkDatatypeDecl("list")
  cons = solver.mkDatatypeConstructorDecl("cons")
  cons.addSelector("head", solver.getIntegerSort())
  dtypeSpec.addConstructor(cons)
  assert dtypeSpec.getNumConstructors() == 1
  assert not dtypeSpec.isParametric()
  listSort = solver.mkDatatypeSort(dtypeSpec)
  d = listSort.getDatatype()
  consConstr = d[0]
  sel = consConstr[0]

  # verifying that the new objects are non-null
  assert not dtypeSpec.isNull()
  assert not cons.isNull()
  assert not d.isNull()
  assert not consConstr.isNull()
  assert not sel.isNull()
コード例 #2
0
def test_datatype_names(solver):
    intSort = solver.getIntegerSort()

    # create datatype sort to test
    dtypeSpec = solver.mkDatatypeDecl("list")
    dtypeSpec.getName()
    assert dtypeSpec.getName() == "list"
    cons = solver.mkDatatypeConstructorDecl("cons")
    cons.addSelector("head", intSort)
    cons.addSelectorSelf("tail")
    dtypeSpec.addConstructor(cons)
    nil = solver.mkDatatypeConstructorDecl("nil")
    dtypeSpec.addConstructor(nil)
    dtypeSort = solver.mkDatatypeSort(dtypeSpec)
    dt = dtypeSort.getDatatype()
    assert dt.getName() == "list"
    dt.getConstructor("nil")
    dt["cons"]
    with pytest.raises(RuntimeError):
        dt.getConstructor("head")
    with pytest.raises(RuntimeError):
        dt.getConstructor("")

    dcons = dt[0]
    assert dcons.getName() == "cons"
    dcons.getSelector("head")
    dcons["tail"]
    with pytest.raises(RuntimeError):
        dcons.getSelector("cons")

    # get selector
    dselTail = dcons[1]
    assert dselTail.getName() == "tail"
    assert dselTail.getCodomainSort() == dtypeSort

    # get selector from datatype
    dt.getSelector("head")
    with pytest.raises(RuntimeError):
        dt.getSelector("cons")

    # possible to construct null datatype declarations if not using mkDatatypeDecl
    with pytest.raises(RuntimeError):
        DatatypeDecl(solver).getName()