package com.google.checkstyle.test.chapter4formatting.rule43onestatement;

/**
 
* Two import statements on the same line are illegal.
 
*/
import java.io.EOFException; import java.io.BufferedReader; //warn

public class InputOneStatementPerLine {

  
/**
   
* Dummy variable to work on.
   
*/
  
private int one = 0;

  
/**
   
* Dummy variable to work on.
   
*/
  
private int two = 0;

  
/**
   
* Simple legal method.
   
*/
  
public void doLegal() {
    
one = 1;
    
two = 2;
  
}

  
/**
   
* The illegal format is used within a String. Therefor the whole method is legal.
   
*/

  
public void doLegalString() {
    
one = 1;
    
two = 2;
    
System.identityHashCode("one = 1; two = 2");
  
}

  
/**
   
* Within the for-header there are 3 Statements, but this is legal.
   
*/

  
public void doLegalForLoop() {
    
for (int i = 0, j = 0, k = 1; i < 20; i++) { //it's ok.
      
one = i;
    
}
  
}

  
/**
   
* Simplest form of illegal layouts.
   
*/
  
public void doIllegal() {
    
one = 1; two = 2; //warn
    
if (one == 1) {
        
one++; two++; //warn
    
}
    
if (one != 1) { one++; } else { one--; } //warn
    
int n = 10;

    
doLegal(); doLegal(); //warn
    
while (one == 1) {one++; two--;} //warn

  
}

  
/**
   
* While theoretically being distributed over two lines, this is a sample
   
* of 2 statements on one line.
   
*/

  
public void doIllegal2() {
    
one = 1
    
; two = 2; //warn
  
}

  
class Inner
  
{
      
/**
       
* Dummy variable to work on.
       
*/
      
private int one = 0;

      
/**
       
* Dummy variable to work on.
       
*/
      
private int two = 0;

      
/**
       
* Simple legal method.
       
*/
      
public void doLegal() {
        
one = 1;
        
two = 2;
      
}

      
/**
       
* Simplest form a an illegal layout.
       
*/
      
public void doIllegal() {
        
one = 1; two = 2; //warn
        
if (one == 1) {
            
one++; two++; //warn
        
}
        
if (one != 1) { one++; } else { one--; } //warn
        
int n = 10;

        
doLegal(); doLegal(); //warn
        
while (one == 1) {one++; two--;} //warn

      
}
  
}

  
/**
   
* Two declaration statements on the same line are illegal.
   
*/
  
int a; int b; //warn

  
/**
   
* Two declaration statements which are not on the same line
   
* are legal.
   
*/
  
int c;
  
int d;

  
/**
   
* Two assignment (declaration) statements on the same line are illegal.
   
*/
  
int e = 1; int f = 2; //warn

  
/**
   
* Two assignment (declaration) statements on the different lines
   
* are legal.
   
*/

  
int g = 1;
  
int h = 2;

  
/**
   
* This method contains
   
* two object creation statements on the same line.
   
*/

  
private void foo() {
    
//Two object creation statements on the same line are illegal.
    
Object obj1 = new Object(); Object obj2 = new Object(); //warn
  
}

  
/**
   
* One multiline
  
assignment (declaration) statement
   
* is legal.
   
*/

  
int i = 1, j = 2,
      
k = 5;

  
/**
   
* One multiline
  
assignment (declaration) statement
   
* is legal.
   
*/

  
int l = 1,
      
m = 2,
      
n = 5;

  
/**
   
* One multiline
  
assignment (declaration) statement
   
* is legal.
   
*/

  
int w = 1,
      
x = 2,
      
y = 5
          
;

  
/**
   
* Two multiline
  
assignment (declaration) statements
   
* are illegal.
   
*/

  
int o = 1, p = 2,
      
r = 5; int t; //warn

  
/**
   
* Two assignment (declaration) statement
   
* which are not on the same lines and are legal.
   
*/

  
int four = 1,
      
five = 5
          
;
  
int seven = 2;

  
/**
   
* Two statements on the same line
   
* (they both are distributed over two lines)
   
* are illegal.
   
*/

  
int var1 = 5,
      
var4 = 5; int var2 = 6,
      
var3 = 5; //warn

  
/**
   
* Two statements on the same line
   
* (they both are distributed over two lines)
   
* are illegal.
   
*/

  
int var6 = 5; int var7 = 6,
      
var8 = 5; //warn

  
/**
   
* Two statements on the same line
   
* (they both are distributed over two lines)
   
* are illegal.
   
*/

  
private void foo2() {
    
toString(

    
); toString (

    
); //warn
  
}


  
/**
   
* While theoretically being distributed over two lines, this is a sample
   
* of 2 statements on one line.
   
*/

  
int var9 = 1, var10 = 5
      
; int var11 = 2; //warn


  
/**
   
* Multiline for loop statement is legal.
   
*/
  
private void foo3() {
    
for (int n = 0,
         
k = 1;
         
n < 5; n++,
             
k--) {

    
}
  
}

  
/**
   
* Two multiline statements (which are not on the same line)
   
* are legal.
   
*/

  
int var12,
      
var13 = 12;
  
int var14 = 5,
      
var15 = 6;

  
/**
   
* This method contains break and while loop statements.
   
*/

  
private void foo4() {
    
do {
      
var9++;
      
if (var10 > 4) {
        
break; //legal
      
}
      
var11++;
      
var9++;
    
} while (var11 < 7); //legal

    
/**
     
* One statement inside for block is legal
     
*/
    
for (int i = 0; i < 10; i++) one = 5; //legal

    
/**
     
* One statement inside for block where
     
* increment expression is empty is legal
     
*/

    
for (int i = 0; i < 10;) one = 5; //legal

    
/**
     
* One statement inside for block where
     
* increment and conditional expressions are empty
     
* (forever loop) is legal
     
*/

    
for (int i = 0;;) one = 5; //legal
  
}

  
public void foo5() {
    
/**
     
* a "forever" loop.
     
*/
    
for(;;){} //legal
  
}

  
public void foo6() {
  
/**
   
* One statement inside for block is legal
   
*/
    
for (;;) { one = 5; } //legal
  
}

  
/**
   
* One statement inside multiline for loop is legal.
   
*/
  
private void foo7() {
    
for(int n = 0,
            
k = 1
            
; n<5
            
;
            
n++, k--) { var1++; } //legal
    
}

  
/**
   
* Two statements on the same lne
   
* inside multiline for loop are illegal.
   
*/
  
private void foo8() {
    
for(int n = 0,
            
k = 1
            
; n<5
            
;
            
n++, k--) { var1++; var2++; } //warn
    
}
}