blob: 411691b87bb19367baa4084d66cb5d6a8de8bc1f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2017 Mountainminds GmbH & Co. KG and Contributors
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Marc R. Hoffmann - initial API and implementation
*
*******************************************************************************/
package org.jacoco.core.test.validation.targets;
import static org.jacoco.core.test.validation.targets.Stubs.f;
import static org.jacoco.core.test.validation.targets.Stubs.i2;
import static org.jacoco.core.test.validation.targets.Stubs.nop;
import static org.jacoco.core.test.validation.targets.Stubs.t;
import java.util.Collections;
/**
* This target exercises a set of common Java control structures.
*/
public class Target01 {
public static void main(String[] args) {
unconditionalExecution();
missedIfBlock();
executedIfBlock();
missedWhileBlock();
alwaysExecutedWhileBlock();
executedWhileBlock();
executedDoWhileBlock();
missedForBlock();
executedForBlock();
missedForEachBlock();
executedForEachBlock();
tableSwitchWithHit();
continuedTableSwitchWithHit();
tableSwitchWithoutHit();
lookupSwitchWithHit();
continuedLookupSwitchWithHit();
lookupSwitchWithoutHit();
breakStatement();
continueStatement();
conditionalReturn();
implicitReturn();
explicitReturn();
}
private static void unconditionalExecution() {
nop(); // $line-unconditional$
}
private static void missedIfBlock() {
if (f()) { // $line-iffalse$
nop(); // $line-missedif$
} else {
nop(); // $line-executedelse$
}
}
private static void executedIfBlock() {
if (t()) { // $line-iftrue$
nop(); // $line-executedif$
} else {
nop(); // $line-missedelse$
}
}
private static void missedWhileBlock() {
while (f()) { // $line-whilefalse$
nop(); // $line-missedwhile$
}
}
private static void alwaysExecutedWhileBlock() {
while (t()) { // $line-whiletrue$
if (t()) {
break;
}
}
}
private static void executedWhileBlock() {
int i = 0;
while (i++ < 3) { // $line-whiletruefalse$
nop(); // $line-executedwhile$
}
}
private static void executedDoWhileBlock() {
do {
nop(); // $line-executeddowhile$
} while (f()); // $line-executeddowhilefalse$
}
private static void missedForBlock() {
for (nop(); f(); nop()) { // $line-missedforincrementer$
nop(); // $line-missedfor$
}
}
private static void executedForBlock() {
for (int j = 0; j < 1; j++) { // $line-executedforincrementer$
nop(); // $line-executedfor$
}
}
private static void missedForEachBlock() {
for (Object o : Collections.emptyList()) { // $line-missedforeachincrementer$
nop(o); // $line-missedforeach$
}
}
private static void executedForEachBlock() {
for (Object o : Collections.singleton(new Object())) { // $line-executedforeachincrementer$
nop(o); // $line-executedforeach$
}
}
private static void tableSwitchWithHit() {
switch (i2()) { // $line-tswitch1$
case 1:
nop(); // $line-tswitch1case1$
break;
case 2:
nop(); // $line-tswitch1case2$
break;
case 3:
nop(); // $line-tswitch1case3$
break;
default:
nop(); // $line-tswitch1default$
break;
}
}
private static void continuedTableSwitchWithHit() {
switch (i2()) { // $line-tswitch2$
case 1:
nop(); // $line-tswitch2case1$
case 2:
nop(); // $line-tswitch2case2$
case 3:
nop(); // $line-tswitch2case3$
default:
nop(); // $line-tswitch2default$
}
}
private static void tableSwitchWithoutHit() {
switch (i2()) { // $line-tswitch3$
case 3:
nop(); // $line-tswitch3case1$
break;
case 4:
nop(); // $line-tswitch3case2$
break;
case 5:
nop(); // $line-tswitch3case3$
break;
default:
nop(); // $line-tswitch3default$
break;
}
}
private static void lookupSwitchWithHit() {
switch (i2()) { // $line-lswitch1$
case -123:
nop(); // $line-lswitch1case1$
break;
case 2:
nop(); // $line-lswitch1case2$
break;
case 456:
nop(); // $line-lswitch1case3$
break;
default:
nop(); // $line-lswitch1default$
break;
}
}
private static void continuedLookupSwitchWithHit() {
switch (i2()) { // $line-lswitch2$
case -123:
nop(); // $line-lswitch2case1$
case 2:
nop(); // $line-lswitch2case2$
case 456:
nop(); // $line-lswitch2case3$
default:
nop(); // $line-lswitch2default$
}
}
private static void lookupSwitchWithoutHit() {
switch (i2()) { // $line-lswitch3$
case -123:
nop(); // $line-lswitch3case1$
break;
case 456:
nop(); // $line-lswitch3case2$
break;
case 789:
nop(); // $line-lswitch3case3$
break;
default:
nop(); // $line-lswitch3default$
break;
}
}
private static void breakStatement() {
while (true) {
if (t()) {
break; // $line-executedbreak$
}
nop(); // $line-missedafterbreak$
}
}
private static void continueStatement() {
for (int j = 0; j < 1; j++) {
if (t()) {
continue; // $line-executedcontinue$
}
nop(); // $line-missedaftercontinue$
}
}
private static void conditionalReturn() {
if (t()) {
return; // $line-conditionalreturn$
}
nop(); // $line-afterconditionalreturn$
}
private static void implicitReturn() {
} // $line-implicitreturn$
private static void explicitReturn() {
return; // $line-explicitreturn$
} // $line-afterexplicitreturn$
}