/** * Copyright (c) 2012 BMW Car IT and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.jnario.jnario.test.util; import com.google.common.base.Objects; import com.google.common.base.Predicate; import com.google.common.collect.Lists; import com.google.inject.Inject; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.xtext.diagnostics.Severity; import org.eclipse.xtext.resource.FileExtensionProvider; import org.eclipse.xtext.validation.Issue; import org.eclipse.xtext.xbase.lib.Extension; import org.eclipse.xtext.xbase.lib.Functions.Function1; import org.eclipse.xtext.xbase.lib.IterableExtensions; import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; import org.jnario.jnario.test.util.ClassPathUriProviderBuilder; import org.jnario.jnario.test.util.IUriProvider; import org.jnario.jnario.test.util.ModelStore; import org.jnario.jnario.test.util.Resources; import org.junit.Before; import org.junit.Test; @SuppressWarnings("all") public class AbstractParserTest { @Inject @Extension private ModelStore _modelStore; @Inject private FileExtensionProvider fileExtensionProvider; @Before public void setup() { boolean _equals = Objects.equal(this.fileExtensionProvider, null); if (_equals) { return; } Set<String> _fileExtensions = this.fileExtensionProvider.getFileExtensions(); final String fileExtension = IterableExtensions.<String>head(_fileExtensions); Map<String, Object> _extensionToFactoryMap = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap(); final Object factory = _extensionToFactoryMap.get(fileExtension); Map<String, Object> _extensionToFactoryMap_1 = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap(); _extensionToFactoryMap_1.put((fileExtension + "_"), factory); } @Test public void shouldParseAllFilesWithoutParseError() { Class<?> _context = this.context(); boolean _equals = Objects.equal(_context, null); if (_equals) { return; } Class<?> _context_1 = this.context(); ClassPathUriProviderBuilder _startingFrom = ClassPathUriProviderBuilder.startingFrom(_context_1); final Predicate<URI> _function = new Predicate<URI>() { public boolean apply(final URI it) { return AbstractParserTest.this.onlySpecFiles(it); } }; IUriProvider _select = _startingFrom.select(_function); this._modelStore.load(_select); List<Resource> _resources = this._modelStore.resources(); final Function1<Resource, Boolean> _function_1 = new Function1<Resource, Boolean>() { public Boolean apply(final Resource it) { URI _uRI = it.getURI(); return Boolean.valueOf(AbstractParserTest.this.onlySpecFiles(_uRI)); } }; Iterable<Resource> _filter = IterableExtensions.<Resource>filter(_resources, _function_1); final ArrayList<Resource> specs = Lists.<Resource>newArrayList(_filter); final Procedure1<Resource> _function_2 = new Procedure1<Resource>() { public void apply(final Resource resource) { Resources.checkForParseErrors(resource); } }; IterableExtensions.<Resource>forEach(specs, _function_2); } public Class<?> context() { return null; } public boolean onlySpecFiles(final URI uri) { String _strippedFileExtension = this.strippedFileExtension(uri); return this.fileExtensionProvider.isValid(_strippedFileExtension); } public String strippedFileExtension(final URI uri) { String _xblockexpression = null; { String _fileExtension = null; if (uri!=null) { _fileExtension=uri.fileExtension(); } final String fileExtension = _fileExtension; boolean _equals = Objects.equal(fileExtension, null); if (_equals) { return ""; } int _length = fileExtension.length(); int _minus = (_length - 1); _xblockexpression = fileExtension.substring(0, _minus); } return _xblockexpression; } public String errorMessage(final Iterable<Issue> issues) { final StringBuilder result = new StringBuilder(); for (final Issue issue : issues) { { final StringBuilder issueBuilder = this.createIssueMessage(issue); result.append(issueBuilder); } } return result.toString(); } public StringBuilder createIssueMessage(final Issue issue) { URI _uriToProblem = issue.getUriToProblem(); final URI resourceUri = _uriToProblem.trimFragment(); final StringBuilder issueBuilder = new StringBuilder("\n"); Severity _severity = issue.getSeverity(); StringBuilder _append = issueBuilder.append(_severity); _append.append(": \t"); String _lastSegment = resourceUri.lastSegment(); StringBuilder _append_1 = issueBuilder.append(_lastSegment); _append_1.append(" - "); boolean _isFile = resourceUri.isFile(); if (_isFile) { String _fileString = resourceUri.toFileString(); issueBuilder.append(_fileString); } StringBuilder _append_2 = issueBuilder.append("\n"); Integer _lineNumber = issue.getLineNumber(); StringBuilder _append_3 = _append_2.append(_lineNumber); StringBuilder _append_4 = _append_3.append(": "); String _message = issue.getMessage(); _append_4.append(_message); return issueBuilder; } }