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
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"; |
|
} |
|
} |
|
} |