blob: 1d1c5712bc6d8eae9ca0e33e3544db3edc399b4e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016 Institute for Software, HSR Hochschule fuer Technik
* Rapperswil, University of applied sciences and others
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
package org.eclipse.cdt.core.parser.tests.ast2.cxx14.constexpr;
import org.eclipse.cdt.internal.core.dom.parser.IntegralValue;
import junit.framework.TestSuite;
public abstract class DoWhileStatementTests extends TestBase {
public static class NonIndexingTests extends DoWhileStatementTests {
public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
return suite(NonIndexingTests.class);
}
}
public static class SingleProjectTests extends DoWhileStatementTests {
public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
return suite(SingleProjectTests.class);
}
}
// constexpr int f(int n) {
// int sum { 0 };
// int i { 0 };
// do {
// sum += i;
// i++;
// } while (i <= n);
// return sum;
// }
// constexpr int x = f(10);
public void testDoWhile() throws Exception {
assertEvaluationEquals(55);
}
// constexpr int f() {
// int sum { 0 };
// do {
// sum++;
// } while (true);
// return sum;
// }
// constexpr int x = f();
public void testDoWhileInfiniteLoop() throws Exception {
assertEvaluationEquals(IntegralValue.ERROR);
}
// constexpr int f() {
// int sum { 0 };
// do {
// return 42;
// } while (true);
// return sum;
// }
// constexpr int x = f();
public void testDoWhileReturn() throws Exception {
assertEvaluationEquals(42);
}
// constexpr int f(int n) {
// int sum { 0 };
// do
// --n, ++sum;
// while(n > 0);
// return sum;
// }
// constexpr int x = f(10);
public void testDoWhileWithNonCompoundBodyStatement() throws Exception {
assertEvaluationEquals(10);
}
// constexpr int f(int n) {
// int sum { 0 };
// do
// return 42;
// while(n > 0);
// return sum;
// }
// constexpr int x = f(10);
public void testDoWhileWithReturnInNonCompoundBodyStatement() throws Exception {
assertEvaluationEquals(42);
}
}