package jetbrains.mps.baseLanguage.unitTest.execution.client; /*Generated by MPS */ import org.jetbrains.mps.openapi.model.SNode; import org.jetbrains.annotations.NotNull; import org.jetbrains.mps.openapi.model.SNodeReference; import org.jetbrains.mps.openapi.module.SRepository; import jetbrains.mps.smodel.SNodePointer; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import jetbrains.mps.util.annotation.ToRemove; import org.jetbrains.annotations.Nullable; import jetbrains.mps.smodel.ModelAccessHelper; import jetbrains.mps.util.Computable; import jetbrains.mps.internal.collections.runtime.ListSequence; import java.util.ArrayList; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations; public abstract class AbstractTestWrapper<N extends SNode> implements ITestNodeWrapper<N> { @NotNull protected final SNodeReference myNodePointer; private String myFqName; private final SRepository myRepo; public AbstractTestWrapper(@NotNull N node) { myNodePointer = new SNodePointer(node); myRepo = SNodeOperations.getModel(node).getRepository(); } @Deprecated @ToRemove(version = 3.4) public AbstractTestWrapper(@NotNull SNodeReference nodePointer) { myNodePointer = nodePointer; myRepo = null; } /*package*/ SRepository getRepo() { return myRepo; } @Nullable @Override public N getNode() { return new ModelAccessHelper(myRepo).runReadAction(new Computable<N>() { public N compute() { return (N) ((SNodePointer) myNodePointer).resolve(myRepo); } }); } @NotNull @Override public SNodeReference getNodePointer() { return myNodePointer; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || this.getClass() != o.getClass()) { return false; } AbstractTestWrapper that = (AbstractTestWrapper) o; return myNodePointer.equals(that.myNodePointer); } @Override public int hashCode() { int result = 0; result = 31 * result + ((this.myNodePointer != null ? this.myNodePointer.hashCode() : 0)); return result; } @Nullable @Override public ITestNodeWrapper getTestCase() { return null; } @NotNull @Override public Iterable<ITestNodeWrapper> getTestMethods() { return ListSequence.fromList(new ArrayList<ITestNodeWrapper>()); } @NotNull @Override public TestParameters getTestRunParameters() { return TestParameters.calcDefault(myRepo); } @Override public String getName() { SNode node = getNode(); if (node == null) { return null; } if (SNodeOperations.isInstanceOf(node, MetaAdapterFactory.getInterfaceConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, "jetbrains.mps.lang.core.structure.INamedConcept"))) { return SPropertyOperations.getString(SNodeOperations.cast(node, MetaAdapterFactory.getInterfaceConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, "jetbrains.mps.lang.core.structure.INamedConcept")), MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name")); } else { throw new UnsupportedOperationException("Should override getName for not INamedConcept: " + SNodeOperations.getConcept(node)); } } @Override public String getFqName() { ITestNodeWrapper testCase = getTestCase(); if (isTestCase() || testCase == null) { SNode node = getNode(); if (node == null) { return null; } if (SNodeOperations.isInstanceOf(node, MetaAdapterFactory.getInterfaceConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, "jetbrains.mps.lang.core.structure.INamedConcept"))) { return SPropertyOperations.getString(SNodeOperations.cast(node, MetaAdapterFactory.getInterfaceConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, "jetbrains.mps.lang.core.structure.INamedConcept")), MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name")); } else { throw new UnsupportedOperationException("Should override getFqName for not INamedConcept: " + SNodeOperations.getConcept(node)); } } return testCase.getFqName() + "." + getName(); } @Override public String getCachedFqName() { if (myFqName == null) { myRepo.getModelAccess().runReadAction(new Runnable() { public void run() { myFqName = getFqName(); } }); } return myFqName; } }