001/* 002 * Units of Measurement TCK 003 * Copyright © 2005-2023, Jean-Marie Dautelle, Werner Keil, Otavio Santana. 004 * 005 * All rights reserved. 006 * 007 * Redistribution and use in source and binary forms, with or without modification, 008 * are permitted provided that the following conditions are met: 009 * 010 * 1. Redistributions of source code must retain the above copyright notice, 011 * this list of conditions and the following disclaimer. 012 * 013 * 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions 014 * and the following disclaimer in the documentation and/or other materials provided with the distribution. 015 * 016 * 3. Neither the name of JSR-385 nor the names of its contributors may be used to endorse or promote products 017 * derived from this software without specific prior written permission. 018 * 019 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 020 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 021 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 022 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 023 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 024 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 025 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 026 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 027 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 028 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 029 */ 030package tech.units.tck.util; 031 032import tech.uom.lib.common.function.DescriptionSupplier; 033 034/** 035 * TestNG groups and profiles used in the JSR 385 TCK. 036 * 037 * @author <a href="mailto:[email protected]">Werner Keil</a> 038 * @author <a href="mailto:[email protected]">Teo Bais</a> 039 * @version 2.4, July 7, 2023 040 * @since 1.0 041 */ 042public final class TestGroups { 043 // String constants 044 /** Core group */ public static final String CORE = "core"; 045 /** Format group */ public static final String FORMAT = "format"; 046 /** Base Quantity group */ public static final String BASE_QUANTITY = "base_quantity"; 047 /** Derived Quantity group */ public static final String DERIVED_QUANTITY = "derived_quantity"; 048 /** SPI group */ public static final String SPI = "spi"; 049 050 /** 051 * Minimal groups 052 */ 053 private static final String[] MINIMAL_GROUPS = { CORE }; 054 055 /** 056 * Format groups 057 */ 058 private static final String[] FORMAT_GROUPS = { CORE, FORMAT }; 059 060 /** 061 * Base Quantity groups 062 */ 063 private static final String[] BASE_QUANTITY_GROUPS = { CORE, BASE_QUANTITY }; 064 065 /** 066 * Quantity groups 067 */ 068 private static final String[] QUANTITY_GROUPS = { CORE, BASE_QUANTITY, DERIVED_QUANTITY }; 069 070 /** 071 * Quantity groups and Format 072 */ 073 private static final String[] QUANTITY_GROUPS_AND_FORMAT = { CORE, FORMAT, BASE_QUANTITY, DERIVED_QUANTITY }; 074 075 /** 076 * SPI groups 077 */ 078 private static final String[] SPI_GROUPS = { CORE, FORMAT, SPI }; 079 080 /** 081 * All groups 082 */ 083 private static final String[] ALL_GROUPS = { CORE, FORMAT, BASE_QUANTITY, DERIVED_QUANTITY, SPI }; 084 085 /** 086 * Profiles used in the JSR 385 TCK. 087 * 088 * Some of the most common profiles (used by {@link tech.units.tck.TCKRunner}) are: 089 * <ul> 090 * <li>{@link #MINIMAL} - used to include tests for the core elements of the API. These tests are <b>mandatory</b> for every implementation.</li> 091 * <li>{@link #FORMAT} - formatting tests used to include tests for elements in <code>javax.measure.format</code>.</li> 092 * <li>{@link #FULL} - All tests in the JSR 385 TCK.</li> 093 * </ul> 094 * 095 * @author Werner Keil 096 * @version 2.0 097 * @since 1.0 098 */ 099 public enum Profile implements DescriptionSupplier { 100 /** Minimal Profile */ MINIMAL("Minimal", MINIMAL_GROUPS), // 101 /** Format Profile */ FORMAT("Format", FORMAT_GROUPS), // 102 /** Base Quantity Profile */ BASE_QUANTITY("Base Quantity", BASE_QUANTITY_GROUPS), // 103 /** Quantity Profile */ QUANTITY("Quantity", QUANTITY_GROUPS), // 104 /** Quantity/Format Profile */ QUANTITY_FORMAT("Quantity and Format", QUANTITY_GROUPS_AND_FORMAT), // 105 /** SPI Profile */ SPI("SPI", SPI_GROUPS), // 106 /** Full Profile */ FULL("Full", ALL_GROUPS, true); 107 108 private final String description; 109 private final boolean isDefault; 110 private final String[] groups; 111 112 private Profile(String description, String[] groups, boolean isDefault) { 113 this.description = description; 114 this.groups = groups; 115 this.isDefault = isDefault; 116 } 117 118 private Profile(String description, String[] groups) { 119 this(description, groups, false); 120 } 121 122 /* 123 * (non-Javadoc) 124 * 125 * @see DescriptionSupplier 126 */ 127 public String getDescription() { 128 return description; 129 } 130 131 /** 132 * Returns the test groups 133 * @return test groups 134 */ 135 public String[] getGroups() { return groups; } 136 137 /** 138 * Returns true for the default profile 139 * @return true for the default profile 140 */ 141 public boolean isDefault() { 142 return isDefault; 143 } 144 } 145}