帆软报表设计器源代码。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

121 lines
4.0 KiB

package com.fr.nx.app.designer;
import com.fr.file.FILE;
import com.fr.main.impl.WorkBook;
import com.fr.nx.app.designer.toolbar.TemplateTransformer;
import com.fr.nx.app.designer.toolbar.TransformResult;
import com.fr.nx.app.designer.toolbar.TransformResultInfo;
import org.easymock.EasyMock;
import org.easymock.IAnswer;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.easymock.PowerMock;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PrepareForTest({TemplateTransformer.class, JStreamBook.class})
@PowerMockIgnore({"com.fr.license.*"})
@SuppressStaticInitializationFor({"com.fr.plugin.designer.JStreamBook"})
public class JStreamBookTest {
@Test
public void saveFile() {
PowerMock.mockStatic(TemplateTransformer.class);
final boolean[] fireSave = {false};
JStreamBook workbook =
EasyMock.partialMockBuilder(VirtualJStreamBook.class)
.addMockedMethod("fireJTemplateSaved")
.addMockedMethod("getTarget")
.addMockedMethod("getEditingFILE")
.createMock();
// 保存成功
EasyMock.expect(TemplateTransformer.compileCPTX(null, null))
.andReturn(TransformResultInfo.generateResult(TransformResult.UNSUPPORT, "fake Unsupported").saved(true))
.once();
PowerMock.replay(TemplateTransformer.class);
workbook.fireJTemplateSaved();
EasyMock.expectLastCall().andAnswer(new IAnswer<Void>() {
@Override
public Void answer() throws Throwable {
fireSave[0] = true;
return null;
}
}).once();
EasyMock.expect(workbook.getTarget()).andAnswer(new IAnswer<WorkBook>() {
@Override
public WorkBook answer() throws Throwable {
return null;
}
}).once();
EasyMock.expect(workbook.getEditingFILE()).andAnswer(new IAnswer<FILE>() {
@Override
public FILE answer() throws Throwable {
return null;
}
}).once();
EasyMock.replay(workbook);
boolean saved = workbook.saveFile();
Assert.assertTrue(saved);
Assert.assertTrue(fireSave[0]);
PowerMock.verify(TemplateTransformer.class);
EasyMock.verify(workbook);
fireSave[0] = false;
// 保存失败
PowerMock.reset(TemplateTransformer.class);
EasyMock.expect(TemplateTransformer.compileCPTX(null, null))
.andReturn(TransformResultInfo.generateResult(TransformResult.FAILED, "fake Unsupported").saved(false))
.once();
PowerMock.replay(TemplateTransformer.class);
EasyMock.reset(workbook);
EasyMock.expect(workbook.getTarget()).andAnswer(new IAnswer<WorkBook>() {
@Override
public WorkBook answer() throws Throwable {
return null;
}
}).once();
EasyMock.expect(workbook.getEditingFILE()).andAnswer(new IAnswer<FILE>() {
@Override
public FILE answer() throws Throwable {
return null;
}
}).once();
EasyMock.replay(workbook);
saved = workbook.saveFile();
Assert.assertFalse(saved);
Assert.assertFalse(fireSave[0]);
PowerMock.verify(TemplateTransformer.class);
EasyMock.verify(workbook);
}
private static final class VirtualJStreamBook extends JStreamBook {
public VirtualJStreamBook(WorkBook workBook, FILE file) {
super(workBook, file);
}
@Override
public String toString() {
return this.getClass().getName() + "fake to string";
}
}
}