package de.saumya.mojo.tests; import java.util.ArrayList; import java.util.List; import de.saumya.mojo.jruby.JRubyVersion; import de.saumya.mojo.jruby.JRubyVersion.Mode; public class JRubyRun { public static class Result { public boolean success; public String message; } public final Mode[] modes; public final JRubyVersion version; public final boolean isDefaultModeOnly; final Result[] results = new Result[Mode.values().length]; private static Mode[] filter( JRubyVersion version, Mode[] modes ) { List<Mode> result = new ArrayList<Mode>(); for( Mode m: modes ) { if ( version.hasMode( m ) ) { result.add( m ); } } return result.toArray( new Mode[ result.size() ] ); } public JRubyRun( JRubyVersion version ){ this( true, version, version.defaultMode() ); } public JRubyRun( JRubyVersion version, Mode... modes ){ this( false, version, modes ); } public JRubyRun( boolean isDefault, JRubyVersion version, Mode... modes ){ this.modes = modes.length == 0 ? new Mode[] { version.defaultMode() }: filter( version, modes ); this.version = version; this.isDefaultModeOnly = isDefault; } public Result result(Mode mode){ return results[ mode.ordinal() ]; } public void setResult(Mode mode, Result result){ results[mode == null ? version.defaultMode().ordinal() : mode.ordinal()] = result; } public String toString(Mode mode){ Result result = result(mode); return "jruby-" + version + " mode " + mode + ": " + result.message; } }