package com.google.jstestdriver.idea.assertFramework.qunit; import com.google.jstestdriver.idea.assertFramework.support.AbstractAddAdapterSupportInspection; import com.google.jstestdriver.idea.assertFramework.qunit.jsSrc.QUnitAdapterSrcMarker; import com.google.jstestdriver.idea.util.JsPsiUtils; import com.google.jstestdriver.idea.util.VfsUtils; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.openapi.vfs.VirtualFile; import java.util.List; public class QUnitAdapterSupportProvider extends AbstractAddAdapterSupportInspection { @Override public String getAssertFrameworkName() { return "QUnit"; } @Override public List<VirtualFile> getAdapterSourceFiles() { String[] relativePaths = new String[]{"equiv.js", "QUnitAdapter.js"}; return VfsUtils.findVirtualFilesByResourceNames(QUnitAdapterSrcMarker.class, relativePaths); } @Override protected boolean isNeededSymbol(String methodName, JSExpression[] arguments) { return isQUnitSymbol(methodName, arguments); } private static boolean isQUnitSymbol(String referencedName, JSExpression[] arguments) { if (arguments.length == 0) { return false; } if ("module".equals(referencedName) && JsPsiUtils.isStringElement(arguments[0])) { if (arguments.length == 1) { return true; } if (arguments.length == 2 && JsPsiUtils.isObjectElement(arguments[1])) { return true; } } if ("test".equals(referencedName) && JsPsiUtils.isStringElement(arguments[0])) { if (arguments.length == 1) { return true; } if (arguments.length == 2 && JsPsiUtils.isFunctionExpressionElement(arguments[1])) { return true; } if (arguments.length == 3 && JsPsiUtils.isNumberElement(arguments[1]) && JsPsiUtils.isFunctionExpressionElement(arguments[2])) { return true; } } return false; } }