/*******************************************************************************
 * Copyright (c) 2011 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. Jun 29, 2011
 *******************************************************************************/

package org.eclipse.cdt.debug.edc.tests;

import org.eclipse.cdt.debug.edc.internal.symbols.files.UnmanglerWin32;
import org.eclipse.cdt.debug.edc.internal.symbols.files.UnmanglingException;
import org.junit.Assert;
import org.junit.Test;

/**
 * Note: {@link UnmanglerWin32} is just stubbed, thus this test is just a stub.
 */
public class TestUnmanglerWin32 extends Assert {
	@Test
	public void testUnmanglerWin32() throws UnmanglingException {
		UnmanglerWin32 um = new UnmanglerWin32();
		
		assertTrue(um.isMangled("?ab"));
		assertFalse(um.isMangled("ab"));
		
		assertEquals("main", um.undecorate("_main"));
		assertEquals("func", um.undecorate("__imp_func"));

		um.unmangle("doNothing");
		um.unmangleType("bogus");
		um.unmangleWithoutArgs("bogus");
	}
}
