diff --git a/sqldev/pom.xml b/sqldev/pom.xml
index ac802062..1f603664 100644
--- a/sqldev/pom.xml
+++ b/sqldev/pom.xml
@@ -11,7 +11,7 @@
UTF-8
1.8
1.8
- 2.15.0
+ 2.18.0
/Applications/SQLDeveloper19.1.0.app/Contents/Resources/sqldeveloper
utplsql_for_SQLDev_${project.version}
@@ -170,17 +170,17 @@
org.springframework
spring-jdbc
- 5.1.0.RELEASE
+ 5.1.8.RELEASE
org.springframework
spring-web
- 5.1.0.RELEASE
+ 5.1.8.RELEASE
org.oddgen
org.oddgen.sqldev
- 0.3.0
+ 0.3.1
provided
@@ -264,7 +264,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 2.22.0
+ 2.22.2
-noverify
@@ -296,7 +296,7 @@
org.apache.maven.plugins
maven-antrun-plugin
- 1.8
+ 1.8
prepare-package
@@ -400,7 +400,7 @@
org.apache.felix
maven-bundle-plugin
- 4.0.0
+ 4.2.0
true
${project.name}
@@ -450,7 +450,7 @@
maven-assembly-plugin
- 3.1.0
+ 3.1.1
${final.name}
false
diff --git a/sqldev/src/main/java/org/utplsql/sqldev/model/preference/PreferenceModel.xtend b/sqldev/src/main/java/org/utplsql/sqldev/model/preference/PreferenceModel.xtend
index 524c8c4f..43b212d1 100644
--- a/sqldev/src/main/java/org/utplsql/sqldev/model/preference/PreferenceModel.xtend
+++ b/sqldev/src/main/java/org/utplsql/sqldev/model/preference/PreferenceModel.xtend
@@ -39,6 +39,7 @@ class PreferenceModel extends HashStructureAdapter {
static final String KEY_CLEAR_SCREEN = "clearScreen"
static final String KEY_AUTO_EXECUTE = "autoExecute"
static final String KEY_CHECK_RUN_UTPLSQL_TEST = "checkRunUtplsqlTest"
+ static final String KEY_USE_SMART_TIMES = "useSmartTimes"
static final String KEY_NUMBER_OF_RUNS_IN_HISTORY = "numberOfRunsInHistory"
static final String KEY_SHOW_DISABLED_COUNTER = "showDisabledCounter"
static final String KEY_SHOW_WARNINGS_COUNTER = "showWarningsCounter"
@@ -110,6 +111,14 @@ class PreferenceModel extends HashStructureAdapter {
getHashStructure.putBoolean(PreferenceModel.KEY_CHECK_RUN_UTPLSQL_TEST, checkRunUtplsqlTest)
}
+ def isUseSmartTimes() {
+ return getHashStructure.getBoolean(PreferenceModel.KEY_USE_SMART_TIMES, false)
+ }
+
+ def setUseSmartTimes(boolean useSmartTimes) {
+ getHashStructure.putBoolean(PreferenceModel.KEY_USE_SMART_TIMES, useSmartTimes)
+ }
+
def getNumberOfRunsInHistory() {
return getHashStructure.getInt(PreferenceModel.KEY_NUMBER_OF_RUNS_IN_HISTORY, 10)
}
diff --git a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.xtend b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.xtend
index 8e7bf49a..2500e178 100644
--- a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.xtend
+++ b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.xtend
@@ -255,7 +255,7 @@ class UtplsqlRunner implements RealtimeReporterEventConsumer {
private def initGUI() {
var RunnerView dockable = null
- if (runningInSqlDeveloper && (dockable = RunnerFactory.dockable as RunnerView) === null) {
+ if (runningInSqlDeveloper && (dockable = RunnerFactory.dockable) === null) {
logger.severe('''Error getting utPLSQL dockable. Cannot run utPLSQL test.''')
return false
} else {
diff --git a/sqldev/src/main/java/org/utplsql/sqldev/ui/preference/PreferencePanel.xtend b/sqldev/src/main/java/org/utplsql/sqldev/ui/preference/PreferencePanel.xtend
index 2f49a44e..56667ee4 100644
--- a/sqldev/src/main/java/org/utplsql/sqldev/ui/preference/PreferencePanel.xtend
+++ b/sqldev/src/main/java/org/utplsql/sqldev/ui/preference/PreferencePanel.xtend
@@ -22,10 +22,12 @@ import javax.swing.JButton
import javax.swing.JCheckBox
import javax.swing.JOptionPane
import javax.swing.JPanel
+import javax.swing.JSeparator
import javax.swing.JSpinner
import javax.swing.JTabbedPane
import javax.swing.JTextField
import javax.swing.SpinnerNumberModel
+import javax.swing.SwingConstants
import javax.swing.table.DefaultTableModel
import oracle.dbtools.raptor.templates.CodeTemplateUtil
import oracle.ide.panels.DefaultTraversablePanel
@@ -45,6 +47,7 @@ class PreferencePanel extends DefaultTraversablePanel {
val JCheckBox clearScreenCheckBox = new JCheckBox
val JCheckBox autoExecuteCheckBox = new JCheckBox
val JCheckBox checkRunUtplsqlTestCheckBox = new JCheckBox
+ val JCheckBox useSmartTimesCheckBox = new JCheckBox
val JButton importSnippetsButton = new JButton(UtplsqlResources.getString("PREF_IMPORT_SNIPPETS_BUTTON_LABEL"))
val JPanel realtimeReporterPanel = new JPanel
val SpinnerNumberModel numberOfRunsInHistoryModel = new SpinnerNumberModel(1, 1, 100, 1);
@@ -104,6 +107,10 @@ class PreferencePanel extends DefaultTraversablePanel {
runTab.add(
runTab.field.label.withText(UtplsqlResources.getString("PREF_CHECK_RUN_UTPLSQL_TEST_LABEL")).component(
checkRunUtplsqlTestCheckBox))
+ runTab.add(
+ runTab.field.label.withText(UtplsqlResources.getString("PREF_USE_SMART_TIMES_LABEL")).component(
+ useSmartTimesCheckBox))
+ runTab.addRow(new JSeparator(SwingConstants.HORIZONTAL))
runTab.addRow(importSnippetsButton)
runTab.addVerticalSpring
@@ -336,6 +343,7 @@ class PreferencePanel extends DefaultTraversablePanel {
clearScreenCheckBox.selected = info.clearScreen
autoExecuteCheckBox.selected = info.autoExecute
checkRunUtplsqlTestCheckBox.selected = info.checkRunUtplsqlTest
+ useSmartTimesCheckBox.selected = info.useSmartTimes
numberOfRunsInHistorySpinner.value = info.numberOfRunsInHistory
showDisabledCounterCheckBox.selected = info.showDisabledCounter
showWarningsCounterCheckBox.selected = info.showWarningsCounter
@@ -371,6 +379,7 @@ class PreferencePanel extends DefaultTraversablePanel {
info.autoExecute = autoExecuteCheckBox.selected
info.numberOfRunsInHistory = numberOfRunsInHistorySpinner.value as Integer
info.checkRunUtplsqlTest = checkRunUtplsqlTestCheckBox.selected
+ info.useSmartTimes = useSmartTimesCheckBox.selected
info.showDisabledCounter = showDisabledCounterCheckBox.selected
info.showWarningsCounter = showWarningsCounterCheckBox.selected
info.showInfoCounter = showInfoCounterCheckBox.selected
diff --git a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/GradientToolbar.xtend b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/GradientToolbar.xtend
index 1fb4adaf..8c04e7b5 100644
--- a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/GradientToolbar.xtend
+++ b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/GradientToolbar.xtend
@@ -58,7 +58,7 @@ class GradientToolbar extends JToolBar {
val g2d = g as Graphics2D
val w = width
val h = height - 1
- val h2 = height / 2 as int
+ val int h2 = height / 2
val colorTop = new Color(237, 237, 237)
val colorMiddle = new Color(244, 244, 244)
val colorBottom = new Color(254, 254, 254)
diff --git a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.xtend b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.xtend
index 5eb4de0f..6fe5f80d 100644
--- a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.xtend
+++ b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.xtend
@@ -26,7 +26,6 @@ import java.awt.event.ActionEvent
import java.awt.event.ActionListener
import java.awt.event.MouseEvent
import java.awt.event.MouseListener
-import java.text.DecimalFormat
import java.util.ArrayList
import java.util.regex.Pattern
import javax.swing.BorderFactory
@@ -75,6 +74,7 @@ class RunnerPanel implements ActionListener, MouseListener, HyperlinkListener {
static val INDICATOR_WIDTH = 20
static val OVERVIEW_TABLE_ROW_HEIGHT = 20
static val TEXTPANE_DIM = new Dimension(100, 100)
+ static var boolean useSmartTimes
LimitedLinkedHashMap runs = new LimitedLinkedHashMap(10)
Run currentRun
JPanel basePanel
@@ -338,6 +338,7 @@ class RunnerPanel implements ActionListener, MouseListener, HyperlinkListener {
fixCheckBoxMenuItem(showInfoIndicatorCheckBoxMenuItem)
syncDetailTabCheckBoxMenuItem.selected = preferences.syncDetailTab
fixCheckBoxMenuItem(syncDetailTabCheckBoxMenuItem)
+ useSmartTimes = preferences.useSmartTimes
}
def setModel(Run run) {
@@ -349,7 +350,13 @@ class RunnerPanel implements ActionListener, MouseListener, HyperlinkListener {
private def setCurrentRun(Run run) {
if (run !== currentRun) {
currentRun = run
- testOverviewTableModel.setModel(run.tests, showTestDescriptionCheckBoxMenuItem.selected)
+ testOverviewTableModel.setModel(run.tests, showTestDescriptionCheckBoxMenuItem.selected, useSmartTimes)
+ val header = testOverviewTableModel.timeColumnName
+ val timeColumn = testOverviewTable.columnModel.getColumn(4)
+ if (timeColumn.headerValue != header) {
+ timeColumn.headerValue = header
+ testOverviewTable.tableHeader.repaint
+ }
resetDerived
val item = new ComboBoxItem(currentRun.reporterId, currentRun.name)
runComboBox.selectedItem = item
@@ -640,12 +647,10 @@ class RunnerPanel implements ActionListener, MouseListener, HyperlinkListener {
}
static class TimeFormatRenderer extends DefaultTableCellRenderer {
- static val DecimalFormat formatter = new DecimalFormat("#,##0.000")
-
override getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int col) {
- val renderedValue = if (value === null) {null} else {formatter.format(value as Number)}
- return super.getTableCellRendererComponent(table, renderedValue, isSelected, hasFocus, row, col)
+ val smartTime = new SmartTime(value as Double, useSmartTimes)
+ return super.getTableCellRendererComponent(table, smartTime.toString, isSelected, hasFocus, row, col)
}
}
diff --git a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/SmartTime.xtend b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/SmartTime.xtend
new file mode 100644
index 00000000..627b6369
--- /dev/null
+++ b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/SmartTime.xtend
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2019 Philipp Salvisberg
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.utplsql.sqldev.ui.runner
+
+import java.text.DecimalFormat
+
+class SmartTime {
+ var Double seconds
+ var boolean smart = false
+
+ new() {
+ super()
+ }
+
+ new(Double seconds, boolean smart) {
+ super()
+ this.seconds = seconds
+ this.smart = smart
+ }
+
+ def setMillis(Double seconds) {
+ this.seconds = seconds
+ }
+
+ def setSmart(boolean smart) {
+ this.smart = smart
+ }
+
+ def getSeconds() {
+ return seconds
+ }
+
+ override toString() {
+ var String ret;
+ if (seconds === null) {
+ ret = null
+ } else if (smart) {
+ if (seconds >= 60*60) {
+ val DecimalFormat formatter = new DecimalFormat("#0.00")
+ ret = formatter.format(seconds / 60 / 60) + " h"
+ } else if (seconds >= 60) {
+ val DecimalFormat formatter = new DecimalFormat("#0.00")
+ ret = formatter.format(seconds / 60) + " min"
+ } else if (seconds >= 1) {
+ val DecimalFormat formatter = new DecimalFormat("#0.000")
+ ret = formatter.format(seconds) + " s"
+ } else {
+ val DecimalFormat formatter = new DecimalFormat("##0")
+ ret = formatter.format(seconds * 1000) + " ms"
+ }
+
+ } else {
+ val DecimalFormat formatter = new DecimalFormat("##,##0.000")
+ ret = formatter.format(seconds)
+ }
+ return ret
+ }
+
+}
\ No newline at end of file
diff --git a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/TestOverviewTableModel.xtend b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/TestOverviewTableModel.xtend
index 55c42d8a..c0f021c2 100644
--- a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/TestOverviewTableModel.xtend
+++ b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/TestOverviewTableModel.xtend
@@ -27,6 +27,7 @@ class TestOverviewTableModel extends DefaultTableModel {
String commonPrefix
boolean commonPrefixCalculated
boolean showDescription
+ boolean useSmartTimes
new() {
super()
@@ -40,10 +41,11 @@ class TestOverviewTableModel extends DefaultTableModel {
}
}
- def setModel(LinkedHashMap tests, boolean showDescription) {
+ def setModel(LinkedHashMap tests, boolean showDescription, boolean useSmartTimes) {
commonPrefixCalculated = false
this.tests = tests
this.showDescription = showDescription
+ this.useSmartTimes = useSmartTimes
calcCommonPrefix
fireTableDataChanged()
}
@@ -70,6 +72,11 @@ class TestOverviewTableModel extends DefaultTableModel {
}
}
+ def getTimeColumnName() {
+ val timeColumnName = '''«UtplsqlResources.getString("RUNNER_TEST_EXECUTION_TIME_COLUMN")»«IF !useSmartTimes» [s]«ENDIF»'''
+ return timeColumnName
+ }
+
def getTest(int row) {
val entry = tests.entrySet.get(row)
val test = tests.get(entry.key)
@@ -120,7 +127,7 @@ class TestOverviewTableModel extends DefaultTableModel {
override getColumnName(int col) {
return #["", "", "", UtplsqlResources.getString(if (showDescription) {"RUNNER_DESCRIPTION_LABEL"} else {"RUNNER_TEST_ID_COLUMN"}),
- UtplsqlResources.getString("RUNNER_TEST_EXECUTION_TIME_COLUMN")].get(col)
+ timeColumnName].get(col)
}
override isCellEditable(int row, int column) {
diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources.properties b/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources.properties
index a74fe55e..630bc2b3 100644
--- a/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources.properties
+++ b/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources.properties
@@ -32,6 +32,7 @@ PREF_RESET_PACKAGE_LABEL=Reset package before running utPLSQL?
PREF_CLEAR_SCREEN_LABEL=Clear script output panel before running utPLSQL?
PREF_AUTO_EXECUTE_LABEL=Execute unit test automatically?
PREF_CHECK_RUN_UTPLSQL_TEST_LABEL=Check availability of menu option?
+PREF_USE_SMART_TIMES_LABEL=Use smart times?
PREF_IMPORT_SNIPPETS_BUTTON_LABEL=Import Snippets
MENU_REALTIME_REPORTER_LABEL=Realtime Reporter
PREF_NUMBER_OF_RUNS_IN_HISTORY_LABEL=Number of runs in history
@@ -89,7 +90,7 @@ RUNNER_NO_TESTS_FOUND_TEXT=No tests found.
RUNNER_RUN_MENUITEM=Run test
RUNNER_RUN_WORKSHEET_MENUITEM=Run test in new worksheet
RUNNER_TEST_ID_COLUMN=Suitepath
-RUNNER_TEST_EXECUTION_TIME_COLUMN=Time [s]
+RUNNER_TEST_EXECUTION_TIME_COLUMN=Time
RUNNER_OWNER_LABEL=Owner
RUNNER_PACKAGE_LABEL=Package
RUNNER_PROCEDURE_LABEL=Procedure
diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources_de.properties b/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources_de.properties
index cd4e0c12..2a275906 100644
--- a/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources_de.properties
+++ b/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources_de.properties
@@ -9,6 +9,7 @@ PREF_RESET_PACKAGE_LABEL=Package vor der Ausf
PREF_CLEAR_SCREEN_LABEL=Skriptausgabe-Fenster vor der Ausführung von utPLSQL leeren?
PREF_AUTO_EXECUTE_LABEL=Unit Test automatisch ausführen?
PREF_CHECK_RUN_UTPLSQL_TEST_LABEL=Verfügbarkeit der Menüoption prüfen?
+PREF_USE_SMART_TIMES_LABEL=Smarte Zeitangaben verwenden?
PREF_IMPORT_SNIPPETS_BUTTON_LABEL=Code-Schnipsel importieren
MENU_REALTIME_REPORTER_LABEL=Realtime Reporter
PREF_NUMBER_OF_RUNS_IN_HISTORY_LABEL=Anzahl Ausführungen in der Historie
@@ -66,7 +67,7 @@ RUNNER_NO_TESTS_FOUND_TEXT=Keine Tests gefunden.
RUNNER_RUN_MENUITEM=Run testTest ausführen
RUNNER_RUN_WORKSHEET_MENUITEM=Test in neuem Arbeitsblatt ausführuen
RUNNER_TEST_ID_COLUMN_NAME=Suitepath
-RUNNER_TEST_EXECUTION_TIME_COLUMN_NAME=Zeit [s]
+RUNNER_TEST_EXECUTION_TIME_COLUMN_NAME=Zeit
RUNNER_OWNER_LABEL=Besitzer
RUNNER_PACKAGE_LABEL=Paket
RUNNER_PROCEDURE_LABEL=Prozedur
diff --git a/sqldev/src/test/java/org/utplsql/sqldev/test/coverage/CodeCoverageReporterDialogTest.xtend b/sqldev/src/test/java/org/utplsql/sqldev/test/coverage/CodeCoverageReporterDialogTest.xtend
index a11c6b20..ffd3e963 100644
--- a/sqldev/src/test/java/org/utplsql/sqldev/test/coverage/CodeCoverageReporterDialogTest.xtend
+++ b/sqldev/src/test/java/org/utplsql/sqldev/test/coverage/CodeCoverageReporterDialogTest.xtend
@@ -26,7 +26,7 @@ class CodeCoverageReporterDialogTest extends AbstractJdbcTest{
val reporter = new CodeCoverageReporter(#["SCOTT"], #['a', 'b', 'c'], dataSource.connection)
reporter.showParameterWindow
Thread.sleep(4 * 1000)
- reporter.frame.exit
+ reporter.frame?.exit
}
}
\ No newline at end of file
diff --git a/sqldev/src/test/java/org/utplsql/sqldev/test/dal/RealtimeReporterFetchSizeTest.xtend b/sqldev/src/test/java/org/utplsql/sqldev/test/dal/RealtimeReporterFetchSizeTest.xtend
index b713cbc2..0bf3f7d9 100644
--- a/sqldev/src/test/java/org/utplsql/sqldev/test/dal/RealtimeReporterFetchSizeTest.xtend
+++ b/sqldev/src/test/java/org/utplsql/sqldev/test/dal/RealtimeReporterFetchSizeTest.xtend
@@ -104,7 +104,7 @@ class RealtimeReporterFetchSizeTest extends AbstractJdbcTest {
@Test
def void delayFreeStreamingConsumtion() {
- val long TOLERANCE_MS = 400
+ val long TOLERANCE_MS = 600
var ds = new SingleConnectionDataSource()
ds.driverClassName = "oracle.jdbc.OracleDriver"
ds.url = dataSource.url
diff --git a/sqldev/src/test/java/org/utplsql/sqldev/test/preference/PreferenceModelTest.xtend b/sqldev/src/test/java/org/utplsql/sqldev/test/preference/PreferenceModelTest.xtend
index 4b575fca..32e9c1f7 100644
--- a/sqldev/src/test/java/org/utplsql/sqldev/test/preference/PreferenceModelTest.xtend
+++ b/sqldev/src/test/java/org/utplsql/sqldev/test/preference/PreferenceModelTest.xtend
@@ -30,6 +30,7 @@ class PreferenceModelTest {
Assert.assertFalse(model.clearScreen)
Assert.assertTrue(model.autoExecute)
Assert.assertFalse(model.checkRunUtplsqlTest)
+ Assert.assertFalse(model.useSmartTimes)
Assert.assertEquals(model.numberOfRunsInHistory, 10)
Assert.assertFalse(model.showDisabledCounter)
Assert.assertFalse(model.showWarningsCounter)
diff --git a/sqldev/src/test/java/org/utplsql/sqldev/test/runner/ExpectationTest.xtend b/sqldev/src/test/java/org/utplsql/sqldev/test/runner/ExpectationTest.xtend
index 7aca6152..7c4cff39 100644
--- a/sqldev/src/test/java/org/utplsql/sqldev/test/runner/ExpectationTest.xtend
+++ b/sqldev/src/test/java/org/utplsql/sqldev/test/runner/ExpectationTest.xtend
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2019 Philipp Salvisberg
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.utplsql.sqldev.test.runner
import org.junit.Assert
diff --git a/sqldev/src/test/java/org/utplsql/sqldev/test/runner/SmartTimeTest.xtend b/sqldev/src/test/java/org/utplsql/sqldev/test/runner/SmartTimeTest.xtend
new file mode 100644
index 00000000..8b104e27
--- /dev/null
+++ b/sqldev/src/test/java/org/utplsql/sqldev/test/runner/SmartTimeTest.xtend
@@ -0,0 +1,147 @@
+/*
+ * Copyright 2019 Philipp Salvisberg
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.utplsql.sqldev.test.runner
+
+import org.junit.Assert
+import org.junit.Test
+import org.utplsql.sqldev.ui.runner.SmartTime
+
+class SmartTimeTest {
+
+ @Test
+ def null_default() {
+ val effective = (new SmartTime(null, false)).toString
+ Assert.assertEquals(null, effective);
+ }
+
+ @Test
+ def null_smart() {
+ val effective = (new SmartTime(null, true)).toString
+ Assert.assertEquals(null, effective);
+ }
+
+ @Test
+ def ms_0_default() {
+ val effective = (new SmartTime(0.0, false)).toString
+ Assert.assertEquals("0.000", effective);
+ }
+
+ @Test
+ def ms_0_smart() {
+ val effective = (new SmartTime(0.0, true)).toString
+ Assert.assertEquals("0 ms", effective);
+ }
+
+ @Test
+ def ms_999_default() {
+ val effective = (new SmartTime(0.999, false)).toString
+ Assert.assertEquals("0.999", effective);
+ }
+
+ @Test
+ def ms_999_smart() {
+ val effective = (new SmartTime(0.999, true)).toString
+ Assert.assertEquals("999 ms", effective);
+ }
+
+ @Test
+ def s_1_default() {
+ val effective = (new SmartTime(1.0, false)).toString
+ Assert.assertEquals("1.000", effective);
+ }
+
+ @Test
+ def s_1_smart() {
+ val effective = (new SmartTime(1.0, true)).toString
+ Assert.assertEquals("1.000 s", effective);
+ }
+
+ @Test
+ def s_59_default() {
+ val effective = (new SmartTime(59.999, false)).toString
+ Assert.assertEquals("59.999", effective);
+ }
+
+ @Test
+ def s_59_smart() {
+ val effective = (new SmartTime(59.999, true)).toString
+ Assert.assertEquals("59.999 s", effective);
+ }
+
+ @Test
+ def min_1_default() {
+ val effective = (new SmartTime(60.0, false)).toString
+ Assert.assertEquals("60.000", effective);
+ }
+
+ @Test
+ def min_1_smart() {
+ val effective = (new SmartTime(60.0, true)).toString
+ Assert.assertEquals("1.00 min", effective);
+ }
+
+ @Test
+ def min_59_default() {
+ val effective = (new SmartTime(3599.999, false)).toString
+ Assert.assertEquals("3,599.999", effective);
+ }
+
+ @Test
+ def min_59_smart_and_rounded() {
+ val effective = (new SmartTime(3599.999, true)).toString
+ Assert.assertEquals("60.00 min", effective);
+ }
+
+ @Test
+ def h_1_default() {
+ val effective = (new SmartTime(3600.0, false)).toString
+ Assert.assertEquals("3,600.000", effective);
+ }
+
+ @Test
+ def h_1_smart() {
+ val effective = (new SmartTime(3600.0, true)).toString
+ Assert.assertEquals("1.00 h", effective);
+ }
+
+ @Test
+ def h_max_default() {
+ val effective = (new SmartTime(99999.999, false)).toString
+ Assert.assertEquals("99,999.999", effective);
+ }
+
+ @Test
+ def h_max_smart() {
+ val effective = (new SmartTime(99999.999, true)).toString
+ Assert.assertEquals("27.78 h", effective);
+ }
+
+ @Test
+ def h_higher_than_max_default() {
+ // larger than format mask
+ // grouping separator applied, even if not specified in format mask
+ val effective = (new SmartTime(100000000.0, false)).toString
+ Assert.assertEquals("100,000,000.000", effective);
+ }
+
+ @Test
+ def h_higher_than_max_smart() {
+ // larger than format mask
+ // no grouping separator applied (that's ok)
+ val effective = (new SmartTime(100000000.0, true)).toString
+ Assert.assertEquals("27777.78 h", effective);
+ }
+}
\ No newline at end of file