From b5a73c6a0c1aa4aa0e16a88a4c05724c9eb3e57c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Blanc?= <regwblanc@gmail.com> Date: Thu, 14 Apr 2016 21:54:44 +0200 Subject: [PATCH] start some unit testing of function closure --- .../leon/purescala/FunctionClosure.scala | 2 +- .../unit/purescala/FunctionClosureSuite.scala | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 src/test/scala/leon/unit/purescala/FunctionClosureSuite.scala diff --git a/src/main/scala/leon/purescala/FunctionClosure.scala b/src/main/scala/leon/purescala/FunctionClosure.scala index ba3353e32..c67e222d8 100644 --- a/src/main/scala/leon/purescala/FunctionClosure.scala +++ b/src/main/scala/leon/purescala/FunctionClosure.scala @@ -23,7 +23,7 @@ object FunctionClosure extends TransformationPhase { * The strategy is as follows: Remove one layer of nested FunDef's, then call * close recursively on the new functions. */ - private def close(fd: FunDef): Seq[FunDef] = { + def close(fd: FunDef): Seq[FunDef] = { // Directly nested functions with their p.c. val nestedWithPathsFull = { diff --git a/src/test/scala/leon/unit/purescala/FunctionClosureSuite.scala b/src/test/scala/leon/unit/purescala/FunctionClosureSuite.scala new file mode 100644 index 000000000..c7274e560 --- /dev/null +++ b/src/test/scala/leon/unit/purescala/FunctionClosureSuite.scala @@ -0,0 +1,28 @@ +/* Copyright 2009-2016 EPFL, Lausanne */ + +package leon.unit.utils + +import leon.test._ +import leon.purescala.Common._ +import leon.purescala.Expressions._ +import leon.purescala.Types._ +import leon.purescala.TypeOps.isSubtypeOf +import leon.purescala.Definitions._ +import leon.purescala.ExprOps._ +import leon.purescala.FunctionClosure + +import org.scalatest._ + +class FunctionClosureSuite extends FunSuite with helpers.ExpressionsDSL { + + val fd1 = new FunDef(FreshIdentifier("f"), Seq(), Seq(ValDef(x.id)), IntegerType) + fd1.body = Some(x) + + test("close does not modify a function without nested functions") { + val cfd1 = FunctionClosure.close(fd1) + assert(cfd1.size === 1) + assert(fd1 === cfd1.head) + assert(fd1.body === cfd1.head.body) + } + +} -- GitLab