| /******************************************************************************* |
| * 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$ |
| |
| } |