package com.siberika.idea.pascal.jps.builder;
import com.siberika.idea.pascal.jps.compiler.CompilerMessager;
import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.incremental.messages.BuildMessage;
import org.jetbrains.jps.incremental.messages.CompilerMessage;
import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import static com.siberika.idea.pascal.jps.compiler.DelphiBackendCompiler.DELPHI_STARTER_RESPONSE;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
/**
* Author: George Bakhtadze
* Date: 12/04/2017
*/
public class DelphiCompilerProcessAdapterTest {
private DelphiCompilerProcessAdapter adapter;
private CompileContext context;
private CompilerMessager messager;
@Before
public void setUp() throws Exception {
context = mock(CompileContext.class);
messager = new PascalCompilerMessager("test", context);
adapter = new DelphiCompilerProcessAdapter(messager);
}
@Test
public void processLine() throws Exception {
adapter.processLine(messager, "c:\\srv\\test.pas(15) Error: E2003 Undeclared identifier");
ArgumentCaptor<CompilerMessage> argument = ArgumentCaptor.forClass(CompilerMessage.class);
verify(context).processMessage(argument.capture());
assertEquals(BuildMessage.Kind.ERROR, argument.getValue().getKind());
assertEquals("E2003 Undeclared identifier", argument.getValue().getMessageText());
assertEquals(15, argument.getValue().getLine());
assertEquals(-1, argument.getValue().getColumn());
assertEquals("c:\\srv\\test.pas", argument.getValue().getSourcePath());
}
@Test
public void starter() throws Exception {
adapter.processLine(messager, DELPHI_STARTER_RESPONSE + ".");
ArgumentCaptor<CompilerMessage> argument = ArgumentCaptor.forClass(CompilerMessage.class);
verify(context).processMessage(argument.capture());
assertEquals(BuildMessage.Kind.ERROR, argument.getValue().getKind());
}
}