/*******************************************************************************
 * Copyright (c) 2010 Nokia 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:
 * Nokia - Initial API and implementation
 *******************************************************************************/
package org.eclipse.cdt.debug.edc.tests;

import org.eclipse.cdt.debug.edc.debugger.tests.BreakpointActionsTest;
import org.eclipse.cdt.debug.edc.debugger.tests.BreakpointsServiceTest;
import org.eclipse.cdt.debug.edc.debugger.tests.Concurrent;
import org.eclipse.cdt.debug.edc.debugger.tests.DisassemblyView;
import org.eclipse.cdt.debug.edc.debugger.tests.DisassemblyViewARMBlackFlagRVCT;
import org.eclipse.cdt.debug.edc.debugger.tests.ExpressionsAggregatesAndEnums;
import org.eclipse.cdt.debug.edc.debugger.tests.ExpressionsBasicTypes;
import org.eclipse.cdt.debug.edc.debugger.tests.ExpressionsCasting;
import org.eclipse.cdt.debug.edc.debugger.tests.ExpressionsCasting2;
import org.eclipse.cdt.debug.edc.debugger.tests.ExpressionsInheritance;
import org.eclipse.cdt.debug.edc.debugger.tests.ExpressionsInvalidExpressions;
import org.eclipse.cdt.debug.edc.debugger.tests.ExpressionsServiceInternalsTest;
import org.eclipse.cdt.debug.edc.debugger.tests.MemoryView;
import org.eclipse.cdt.debug.edc.debugger.tests.ModulesTest;
import org.eclipse.cdt.debug.edc.debugger.tests.OpaqueTypeResolving;
import org.eclipse.cdt.debug.edc.debugger.tests.ProcessesServiceTest;
import org.eclipse.cdt.debug.edc.debugger.tests.RegisterFrameTests;
import org.eclipse.cdt.debug.edc.debugger.tests.RegisterFrameTestsBlackFlag;
import org.eclipse.cdt.debug.edc.debugger.tests.RegisterFrameTestsBlackFlagRVCT;
import org.eclipse.cdt.debug.edc.debugger.tests.RegisterFrameTestsLinux;
import org.eclipse.cdt.debug.edc.debugger.tests.RegisterView;
import org.eclipse.cdt.debug.edc.debugger.tests.ResumeFromLineAtBreakpoint;
import org.eclipse.cdt.debug.edc.debugger.tests.RunAndMoveToLine;
import org.eclipse.cdt.debug.edc.debugger.tests.RunControlDMCSubclass;
import org.eclipse.cdt.debug.edc.debugger.tests.SnapshotTests;
import org.eclipse.cdt.debug.edc.debugger.tests.StackService;
import org.eclipse.cdt.debug.edc.debugger.tests.TestTraceView;
import org.eclipse.cdt.debug.edc.debugger.tests.VariableLocationTest;
import org.eclipse.cdt.debug.edc.system.tests.K9SystemViewTest;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses( {
	BreakpointActionsTest.class,
	BreakpointsServiceTest.class,
	Concurrent.class,
	ConsoleErrorDialog.class,
	DisassembleARMBinary.class,
	DisassembleX86Binary.class,
	DisassemblyView.class,
	DisassemblyViewARMBlackFlagRVCT.class,
	ExpressionsAggregatesAndEnums.class,
	ExpressionsBasicTypes.class,
	ExpressionsCasting.class,
	ExpressionsCasting2.class,
	ExpressionsInheritance.class,
	ExpressionsInvalidExpressions.class,
	ExpressionsServiceInternalsTest.class,
	K9SystemViewTest.class,
	MemoryView.class,
	ModulesTest.class,
	OpaqueTypeResolving.class,
	ProcessesServiceTest.class,
	RegisterFrameTests.class,
	RegisterFrameTestsBlackFlag.class,
	RegisterFrameTestsBlackFlagRVCT.class,
	RegisterFrameTestsLinux.class,
	RegisterView.class,
	ResumeFromLineAtBreakpoint.class,
	RunAndMoveToLine.class,
	RunControlDMCSubclass.class,
	ScopeTest.class,
	Scripting.class,
	ScriptedLaunching.class,
	SnapshotMetaDataTests.class, 
	SnapshotTests.class,
	StackService.class,
	SymbolReader.class,
	TestAgentUtils.class,
	TestARMPlugin.class,
	TestArrayType.class,
	TestByteBufferStreamBuffer.class,
	TestTCFLoggingService.class,
	TestTCFSettingsService.class,
	TestDwarfCompileUnitChildren.class,
	TestDwarfReader.class,
	TestDisassemblerARM.class,
	TestDisassemblerX86.class,
	TestExecutableReader.class,
	TestExecutableSymbolicsReaderFactory.class,
	TestFileStreamBuffer.class,
	TestFindCodeLine.class,
	TestIAddressInterval.class,
	TestMemoryStreamBuffer.class,
	TestOpcodeARM.class,
	TestRangeList.class,
	TestSourceToAddressMapping.class,
	TestSymbolicsReader.class,
	TestTraceView.class,
	TestUnmanglerEABI.class,
	TestUnmanglerWin32.class,
	VariableLocationTest.class,
	// add new cases in alphabetic order
})

public class AllEDCTests {
}
