Uploaded image for project: 'Groovy'
  1. Groovy
  2. GROOVY-1610

Allow nesting categories with method override

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • None
    • 1.1-rc-3
    • None
    • None

    Description

      This feature maybe helpful when unit testing and a Category has already been applied.

      Supplied TestCase:

      import groovy.util.GroovyTestCase
      
      class Greeter{
         String greet(){
            return "Hello Groovy!";
         }
      
         String say( String s ){
            return "I say: "+ s;
         }
      }
      
      class CategoryOne{
         static String greet( Greeter self ){
            return "Hello from One";
         }
      }
      
      class CategoryTwo{
         static String greet( Greeter self ){
            return "Hello from Two";
         }
      }
      
      class TestCategories extends GroovyTestCase{
         void testGreeter_plain(){
      	   def greeter = new Greeter();
      	   assertEquals "Hello Groovy!", greeter.greet();
      	}
      
      	void testGreeter_withOne(){
      	   def greeter = new Greeter();
      	   assertEquals "Hello Groovy!", greeter.greet();
      	   use( CategoryOne.class ){
      	      assertEquals "Hello from One", greeter.greet();
      	   }
      	   assertEquals "Hello Groovy!", greeter.greet();
      	}
      
      	void testGreeter_withTwo(){
      	   def greeter = new Greeter();
      	   assertEquals "Hello Groovy!", greeter.greet();
      	   use( CategoryTwo.class ){
      	      assertEquals "Hello from Two", greeter.greet();
      	   }
      	   assertEquals "Hello Groovy!", greeter.greet();
      	}
      
      	void testGreeter_withOneAndTwo_nested(){
      	   // fails!
      	   def greeter = new Greeter();
      	   assertEquals "Hello Groovy!", greeter.greet();
      	   use( CategoryOne.class ){
      	      assertEquals "Hello from One", greeter.greet();
      	      use( CategoryTwo.class ){
      	         assertEquals "Hello from Two", greeter.greet();
      	      }
      	      assertEquals "Hello from One", greeter.greet();
      	   }
      	   assertEquals "Hello Groovy!", greeter.greet();
      	}
      }
      

      Attachments

        Issue Links

          Activity

            People

              blackdrag Jochen Theodorou
              aalmiray Andres Almiray
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: