package org.jetbrains.plugins.gradle.util; import com.intellij.testFramework.SkipInHeadlessEnvironment; import org.jetbrains.plugins.gradle.ui.RichTextControlBuilder; import org.jmock.Expectations; import org.jmock.Mockery; import org.jmock.integration.junit4.JMock; import org.jmock.integration.junit4.JUnit4Mockery; import org.jmock.lib.legacy.ClassImposteriser; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import javax.swing.*; /** * @author Denis Zhdanov * @since 01/17/2012 */ @RunWith(JMock.class) @SkipInHeadlessEnvironment public class RichTextControlBuilderTest { private static final String META_KEY = "my-key"; private RichTextControlBuilder myBuilder; private Mockery myMockery; private RichTextControlBuilder.RichTextProcessor myProcessor; @Before public void setUp() { myBuilder = new RichTextControlBuilder(); myMockery = new JUnit4Mockery() {{ setImposteriser(ClassImposteriser.INSTANCE); }}; myProcessor = myMockery.mock(RichTextControlBuilder.RichTextProcessor.class); myMockery.checking(new Expectations() {{ allowing(myProcessor).getKey(); will(returnValue(META_KEY)); }}); myBuilder.registerProcessor(myProcessor); } @After public void checkExpectations() { myMockery.assertIsSatisfied(); } @Test(expected = IllegalArgumentException.class) public void invalidMetaKeyDefinition() { myBuilder.setText("test {@ invalid-key data}"); } @Test(expected = IllegalArgumentException.class) public void noProcessorForMetaKey() { myBuilder.setText("{@key data}"); } @Test public void completeMetaInfo() { String text = String.format("this is a test text with two inline meta-datas: {@%s meta \t text} and {@%s}", META_KEY, META_KEY); myMockery.checking(new Expectations() {{ one(myProcessor).process("meta \t text"); will(returnValue(new JLabel(""))); one(myProcessor).process(""); will(returnValue(new JLabel(""))); }}); myBuilder.setText(text); } }