blob: 2a197b20917eaebc19c486076baa45e61ac2a658 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2020 École Polytechnique de Montréal
*
* 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.eclipse.tracecompass.incubator.scripting.ui.tests;
import java.util.function.Function;
import org.eclipse.ease.modules.WrapToScript;
import org.eclipse.tracecompass.incubator.scripting.core.tests.perf.ScriptingBenchmark;
/**
* EASE module for scripting purposes
*
* @author Geneviève Bastien
*/
public class TestModule {
/**
* Execute a simple computation of java instructions
*/
@WrapToScript
public void doJavaLoop() {
int base = ScriptingBenchmark.INITIAL_VALUE;
long value = base;
while (base < ScriptingBenchmark.LIMIT) {
if (value == 1) {
value = base++;
}
if (value % 2 == 0) {
value = value / 2;
} else {
value = 3 * value + 1;
}
}
}
/**
* Execute a simple computation, but each loop calls a callback received in
* parameters to update the value
*
* @param function
* The function callback to execute
*/
@WrapToScript
public void doLoopWithCallback(Function<Long, Number> function) {
int base = ScriptingBenchmark.INITIAL_VALUE;
long value = base;
while (base < 20000) {
if (value == 1) {
value = base++;
}
value = function.apply(value).longValue();
}
}
/**
* Compute one value of the sequence
*
* @param value
* The value to use to compute
* @return The result of the computation
*/
@WrapToScript
public long compute(Long value) {
if (value % 2 == 0) {
return value / 2;
}
return 3 * value + 1;
}
}