blob: 24d2c95754844896191ce3d738919daf43049cb6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013 RCP Vision (http://www.rcp-vision.com) 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
*
* Contributors:
* Lorenzo Bettini - initial API and implementation
*******************************************************************************/
package org.eclipse.emf.parsley.dsl.tests
import com.google.inject.Inject
import org.apache.log4j.ConsoleAppender
import org.apache.log4j.Level
import org.apache.log4j.Logger
import org.apache.log4j.spi.LoggingEvent
import org.eclipse.emf.parsley.dsl.EmfParsleyDslInjectorProvider
import org.eclipse.emf.parsley.dsl.model.Model
import org.eclipse.xtext.junit4.InjectWith
import org.eclipse.xtext.junit4.XtextRunner
import org.eclipse.xtext.junit4.util.ParseHelper
import org.eclipse.xtext.junit4.validation.ValidationTestHelper
import org.eclipse.xtext.xbase.jvmmodel.JvmModelAssociator
import org.junit.After
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import static extension org.junit.Assert.*
@RunWith(typeof(XtextRunner))
@InjectWith(typeof(EmfParsleyDslInjectorProvider))
class EmfParsleyDslSmokeTests {
@Inject extension ParseHelper<Model>
@Inject extension ValidationTestHelper
private final static Logger LOG = Logger.getLogger(JvmModelAssociator);
/**
* JvmModelAssociator does not throw exceptions but logs possible
* errors; we use this class to record possible error events
*/
static class LogListener extends ConsoleAppender {
val public events = newArrayList()
override doAppend(LoggingEvent event) {
if (event.getLevel == Level.ERROR) {
events += event
}
}
}
var LogListener logListener
@Before
def void createAppender() {
logListener = new LogListener => [
LOG.addAppender(it)
]
}
@After
def void removeAppender() {
LOG.removeAppender(logListener)
}
@Test
def void testModuleWithNoName() {
'''
module
'''.assertNoException
}
@Test
def void testExtendsWithoutType() {
'''
module my.empty extends
'''.assertNoException
}
@Test
def void testTypeBindingWithNoType() {
'''
module my.empty {
bindings {
type
}
}
'''.assertNoException
}
@Test
def void testProviderBindingWithNoType() {
'''
module my.empty {
bindings {
provide
}
}
'''.assertNoException
}
@Test
def void testValueBindingWithNoType() {
'''
module my.empty {
bindings {
value
}
}
'''.assertNoException
}
@Test
def void testValueBindingWithUnknownType() {
'''
module my.empty {
bindings {
value Foo TableColumnWeights
}
}
'''.assertNoException
}
@Test
def void testResourceManagerInitializeWithNoBody() {
'''
module my.empty {
resourceManager {
initializeResource
}
}
'''.assertNoException
}
@Test
def void testResourceManagerSaveWithNoBody() {
'''
module my.empty {
resourceManager {
saveSave
}
}
'''.assertNoException
}
def private assertNoException(CharSequence s) {
s.parse.validate
// there must be no error in the log either
assertTrue("Some error was reported in the LOG", logListener.events.empty)
}
}