/*******************************************************************************
 * Copyright (c) 2013, 2018 Red Hat, Inc.
 * 
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *    Red Hat - initial API and implementation
 *******************************************************************************/
package org.eclipse.linuxtools.oprofile.launch.tests.utils;

import org.eclipse.core.resources.IProject;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.linuxtools.internal.oprofile.core.daemon.OpEvent;
import org.eclipse.linuxtools.internal.oprofile.core.daemon.OpUnitMask;
import org.eclipse.linuxtools.internal.oprofile.core.daemon.OpUnitMask.MaskInfo;
import org.eclipse.linuxtools.internal.oprofile.launch.configuration.AbstractEventConfigTab;
import org.eclipse.linuxtools.internal.oprofile.launch.configuration.OprofileCounter;
import org.eclipse.swt.widgets.Button;

// mock event configuration tab
public class OprofileTestingEventConfigTab extends AbstractEventConfigTab {
    private IProject project;

    @Override
    protected boolean getOprofileTimerMode() {
        return false;
    }

    @Override
    protected int getNumberOfOprofileCounters() {
        return 1;
    }

    @Override
    protected boolean checkEventSetupValidity(int counter, String name,
            int maskValue) {
        return true;
    }

    @Override
    protected IProject getOprofileProject() {
        return project;
    }

    @Override
    public void setOprofileProject(IProject proj) {
        project = proj;
    }

    @Override
    protected void updateOprofileInfo() {
    }

    public Button getDefaultCheck() {
        return defaultEventCheck;
    }

    @Override
    protected OprofileCounter[] getOprofileCounters(ILaunchConfiguration config) {
        // setup and return mock counters
        OprofileCounter[] ctrs = new OprofileCounter[] { getOprofileCounter(1) };
        return ctrs;
    }

    @Override
    public OprofileCounter getOprofileCounter(int i) {
        // mock mask info
        MaskInfo maskInfo = new MaskInfo();
        maskInfo.description = "mock mask info"; //$NON-NLS-1$
        maskInfo.value = 0;

        MaskInfo[] maskInfoDescriptions = { maskInfo };

        // mock mask
        OpUnitMask mask = new OpUnitMask();
        mask.setDefault(0);
        mask.setMaskDescriptions(maskInfoDescriptions);
        mask.setType(0);
        mask.setMaskFromIndex(0);
        mask.setMaskValue(0);

        // mock events
        OpEvent event = new OpEvent();
        event.setMinCount(1);
        event.setText("mock-event"); //$NON-NLS-1$
        event.setTextDescription("Mock Event"); //$NON-NLS-1$
        event.setUnitMask(mask);

        OpEvent[] events = { event };

        // mock counter
        OprofileCounter ctr = new OprofileCounter(i, events);
        ctr.setCount(1);
        ctr.setEvents(new OpEvent [] {event});

        return ctr;
    }

}
