blob: 5712181043db90f8815488f1d9b9780bdff732bf [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 junit.framework.TestSuite;
public abstract class SwitchStatementTests extends TestBase {
public static class NonIndexingTests extends SwitchStatementTests {
public NonIndexingTests() {
setStrategy(new NonIndexingTestStrategy());
}
public static TestSuite suite() {
return suite(NonIndexingTests.class);
}
}
public static class SingleProjectTests extends SwitchStatementTests {
public SingleProjectTests() {
setStrategy(new SinglePDOMTestStrategy(true, false));
}
public static TestSuite suite() {
return suite(SingleProjectTests.class);
}
}
// constexpr int f() {
// int x { 1 };
// switch (x) {
// case 1:
// return 1;
// case 2:
// return 2;
// default:
// return -1;
// }
// }
// constexpr int x = f();
public void testSwitchFirstCase() throws Exception {
assertEvaluationEquals(1);
}
// constexpr int f() {
// int x { 2 };
// switch (x) {
// case 1:
// return 1;
// case 2:
// return 2;
// default:
// return -1;
// }
// }
// constexpr int x = f();
public void testSwitchMiddleCase() throws Exception {
assertEvaluationEquals(2);
}
// constexpr int f() {
// int x { 3 };
// switch (x) {
// case 1:
// return 1;
// case 2:
// return 2;
// default:
// return -1;
// }
// }
// constexpr int x = f();
public void testSwitchDefault() throws Exception {
assertEvaluationEquals(-1);
}
// constexpr int f() {
// int x { 1 };
// switch (x) {
// case 1:
// case 2:
// return 2;
// default:
// return -1;
// }
// }
// constexpr int x = f();
public void testSwitchFallThrough() throws Exception {
assertEvaluationEquals(2);
}
// constexpr int f() {
// int x { 1 };
// int y = 10;
// switch(x)
// case 1:
// y++;
// y--;
// return y;
// }
// constexpr int x = f();
public void testSwitchWithOnlyOneClause1() throws Exception {
assertEvaluationEquals(10);
}
// constexpr int f() {
// int x { 0 };
// int y = 10;
// switch(x)
// case 1:
// y++;
// y--;
// return y;
// }
// constexpr int x = f();
public void testSwitchWithOnlyOneClause2() throws Exception {
assertEvaluationEquals(9);
}
// constexpr int f() {
// int x { 2 };
// int y = 2;
// switch (x) {
// case 1:
// y = 10;
// break;
// case 2:
// y = 20;
// break;
// default:
// y = 30;
// }
// return y;
// }
// constexpr int x = f();
public void testSwitchBreak() throws Exception {
assertEvaluationEquals(20);
}
// constexpr int f() {
// int x { 3 };
// int y = 2;
// switch (x) {
// case 1:
// y = 10;
// break;
// case 2:
// y = 20;
// break;
// }
// return y;
// }
// constexpr int x = f();
public void testSwitchNoMatchingCaseAndNoDefault() throws Exception {
assertEvaluationEquals(2);
}
// class Point {
// int x, y;
// public:
// constexpr Point(int x, int y):x{x}, y{y*2} {}
// constexpr int getY() const { return y; }
// };
// constexpr int f() {
// int x { 2 };
// int y = 5;
// constexpr Point p{4, 1};
//
// switch (x) {
// case 1:
// y = 10;
// break;
// case p.getY():
// y = 20;
// break;
// }
// return y;
// }
// constexpr int x = f();
public void testSwitchCaseConstants() throws Exception {
assertEvaluationEquals(20);
}
// constexpr int triple(int x) {
// return x * 3;
// }
// constexpr int f(int y) {
// switch(int x = triple(y)) {
// case 9:
// return 1;
// case 12:
// return 2;
// case 15:
// return 3;
// default:
// return 4;
// }
// }
// constexpr int x = f(5);
public void testDeclarationInSwitchStatementController() throws Exception {
assertEvaluationEquals(3);
}
// enum Color { RED, GREEN, BLUE };
// constexpr int f(Color color) {
// switch(color) {
// case RED:
// return 1;
// case GREEN:
// return 2;
// case BLUE:
// return 3;
// }
// }
// constexpr int x = f(BLUE);
public void testSwitchOnEnumValue() throws Exception {
assertEvaluationEquals(3);
}
// constexpr int f() {
// int arr[] = {1,2,1,3,5,6,1,2,0};
// int sum{};
// for(int i : arr) {
// switch(i) {
// case 1:
// sum++;
// break;
// default:
// continue;
// sum += 2;
// }
// }
// return sum;
// }
// constexpr int x = f();
public void testSwitchWithNestedContinueStatement() throws Exception {
assertEvaluationEquals(3);
}
// constexpr int triple(int x) {
// return x * 3;
// }
// constexpr int f(int y) {
// switch(int x = triple(y); x) {
// case 9:
// return 1;
// case 12:
// return 2;
// case 15:
// return 3;
// default:
// return 4;
// }
// }
// constexpr int x = f(5);
public void testDeclarationInSwitchInitStatement() throws Exception {
assertEvaluationEquals(3);
}
// constexpr int triple(int x) {
// return x * 3;
// }
// constexpr int f(int y) {
// switch(; int x = triple(y)) {
// case 9:
// return 1;
// case 12:
// return 2;
// case 15:
// return 3;
// default:
// return 4;
// }
// }
// constexpr int x = f(5);
public void testDeclarationInSwitchStatementControllerEmptyInit() throws Exception {
assertEvaluationEquals(3);
}
}