<?php

// The following are all ok.
interface Test_Interface_Ok_A {
}

class Test_Class_Ok_A {
}

class Test_Class_Ok_B extends Test_Class_Ok_A {
}

class Test_Class_Ok_C implements Test_Interface_Ok_A {
}


// These are all incorrect.
interface Test_Interface_Bad_A
{ // There should be no content after the brace.
}

class Test_Class_Bad_A
	{
	}

class Test_Class_Bad_B extends Test_Class_Bad_A

{ // There should be no content after the brace.
}

class Test_Class_Bad_C implements Test_Interface_Bad_A


{
}

// These should all be flagged for wrong whitespace before opening brace.
interface Test_Interface_Bad_C   {
}

class Test_Class_Bad_G	{		
}

class Test_Class_Bad_H extends Test_Class_Bad_G			{
}

class Test_Class_Bad_I implements Test_Interface_Bad_C{
}

// This one should be flagged as a potential parse error.
class Test_Class_Bad_H

// This is OK.
class A_Class_With_Really_Long_Name
    extends Another_Class_With_A_Really_Long_Name {

}

// This is OK too.
class A_Class_With_Really_Long_Name_2
    extends Another_Class_With_A_Really_Long_Name
    implements Some_Interface_With_A_Long_Name,
          Another_Interface_With_A_Long_Name {

}

// But this is not.
class A_Class_With_Really_Long_Name_3
    extends Another_Class_With_A_Really_Long_Name
	{

}

// Nor is this.
class A_Class_With_Really_Long_Name_4
    extends Another_Class_With_A_Really_Long_Name
    implements Some_Interface_With_A_Long_Name,
          Another_Interface_With_A_Long_Name
{

}

// While this is ok again.
class Test_Class_Bad_G /*some comment*/ {
}

// And this is not.
class Test_Class_Bad_G
    /*some comment*/
{
}

enum Test_Enum
{
}

class Test_Class_Good_D {}

class Test_Class_Bad_H
{}
