From f4445d24cd9db459b2eb8b578b97279d6d490651 Mon Sep 17 00:00:00 2001 From: Chris Cody Date: Tue, 2 Sep 2014 09:34:06 -0500 Subject: [PATCH] Omaha #3365 Removing and realigning AWIPS2 Baseline tests Change-Id: Iba40d0b074df500c52b7302ab59a688680153f48 Former-commit-id: 97000cc70e8d826b3e8828a1731278673e0ac635 --- .../cave/cache/GeometryCachePersistence.java | 1 + .../ui/zoneselector/ZoneSelectorResource.java | 2 +- tests/.classpath | 7 +- .../ebxml/dao/PluginSubscribedListener.java | 1 - .../types/canonical/GetNotificationTest.java | 1 + .../plugin/gfe/config/ProjectionDataTest.java | 12 +- .../gfe/{wcl => watch}/TestWCLWatchSrv.java | 7 +- .../shef/TestMetarToShefTransformer.java | 13 +- .../localization/PathManagerFactoryTest.java | 182 ++++++++++++++++++ .../uf/common/message/TestWsIdAdapter.java | 17 +- .../uf/common/util/ConvertUtilsTest.java | 1 + .../uf/edex/core/modes/EdexModeTest.java | 82 ++++---- .../base/awips2_baseline/obsPurgeRules.xml | 23 +++ 13 files changed, 275 insertions(+), 74 deletions(-) rename tests/unit/com/raytheon/edex/plugin/gfe/{wcl => watch}/TestWCLWatchSrv.java (98%) create mode 100644 tests/unit/com/raytheon/uf/common/localization/PathManagerFactoryTest.java create mode 100644 tests/utility/common_static/base/awips2_baseline/obsPurgeRules.xml diff --git a/cave/com.raytheon.uf.viz.thinclient.cave/src/com/raytheon/uf/viz/thinclient/cave/cache/GeometryCachePersistence.java b/cave/com.raytheon.uf.viz.thinclient.cave/src/com/raytheon/uf/viz/thinclient/cave/cache/GeometryCachePersistence.java index 10ee7878ad..c5cb0f962d 100644 --- a/cave/com.raytheon.uf.viz.thinclient.cave/src/com/raytheon/uf/viz/thinclient/cave/cache/GeometryCachePersistence.java +++ b/cave/com.raytheon.uf.viz.thinclient.cave/src/com/raytheon/uf/viz/thinclient/cave/cache/GeometryCachePersistence.java @@ -37,6 +37,7 @@ import com.raytheon.uf.viz.thinclient.preferences.ThinClientPreferenceConstants; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * Oct 20, 2011 mschenke Initial creation + * Sep 04, 2014 3365 ccody Changes for removing Data_Delivery dependencies * * * diff --git a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/ui/zoneselector/ZoneSelectorResource.java b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/ui/zoneselector/ZoneSelectorResource.java index be9856a268..08367a66cc 100644 --- a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/ui/zoneselector/ZoneSelectorResource.java +++ b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/ui/zoneselector/ZoneSelectorResource.java @@ -105,6 +105,7 @@ import com.vividsolutions.jts.io.WKBReader; * Aug 14, 2014 #3523 mapeters Updated deprecated {@link DrawableString#textStyle} * assignments. * Aug 21, 2014 #3459 randerso Restructured Map resource class hierarchy + * Sep 04, 2014 #3365 ccody Changes for removing Data_Delivery dependencies * * * @@ -705,7 +706,6 @@ public class ZoneSelectorResource extends DbMapResource { .getExtent(); double simpLev = getSimpLev(paintProps); - if ((simpLev < lastSimpLev) || (lastExtent == null) || !lastExtent.getEnvelope().contains( diff --git a/tests/.classpath b/tests/.classpath index 07395a1865..c3ad8c3801 100644 --- a/tests/.classpath +++ b/tests/.classpath @@ -14,7 +14,7 @@ - + @@ -151,9 +151,10 @@ - + - + + diff --git a/tests/integration/com/raytheon/uf/edex/registry/ebxml/dao/PluginSubscribedListener.java b/tests/integration/com/raytheon/uf/edex/registry/ebxml/dao/PluginSubscribedListener.java index 3cc61cff70..e83738b42b 100644 --- a/tests/integration/com/raytheon/uf/edex/registry/ebxml/dao/PluginSubscribedListener.java +++ b/tests/integration/com/raytheon/uf/edex/registry/ebxml/dao/PluginSubscribedListener.java @@ -29,7 +29,6 @@ import oasis.names.tc.ebxml.regrep.xsd.rim.v4.NotificationType; import oasis.names.tc.ebxml.regrep.xsd.rs.v4.RegistryResponseType; import org.junit.Ignore; - import com.raytheon.uf.common.registry.schemas.ebxml.util.EbxmlNamespaces; /** diff --git a/tests/integration/com/raytheon/uf/edex/registry/ebxml/services/query/types/canonical/GetNotificationTest.java b/tests/integration/com/raytheon/uf/edex/registry/ebxml/services/query/types/canonical/GetNotificationTest.java index 15a14824b9..6c2d8345c3 100644 --- a/tests/integration/com/raytheon/uf/edex/registry/ebxml/services/query/types/canonical/GetNotificationTest.java +++ b/tests/integration/com/raytheon/uf/edex/registry/ebxml/services/query/types/canonical/GetNotificationTest.java @@ -53,6 +53,7 @@ import com.raytheon.uf.common.registry.constants.RegistryObjectTypes; import com.raytheon.uf.common.registry.constants.StatusTypes; import com.raytheon.uf.common.registry.ebxml.RegistryUtil; import com.raytheon.uf.common.registry.schemas.ebxml.util.EbxmlNamespaces; +import com.raytheon.uf.edex.registry.ebxml.services.soap.RegistrySOAPServices; import com.raytheon.uf.edex.registry.ebxml.services.query.QueryConstants; import com.raytheon.uf.edex.registry.ebxml.services.query.plugins.GetNotification; import com.raytheon.uf.edex.registry.ebxml.services.query.types.QueryTest; diff --git a/tests/unit/com/raytheon/edex/plugin/gfe/config/ProjectionDataTest.java b/tests/unit/com/raytheon/edex/plugin/gfe/config/ProjectionDataTest.java index 6211a93220..b42171c6a1 100644 --- a/tests/unit/com/raytheon/edex/plugin/gfe/config/ProjectionDataTest.java +++ b/tests/unit/com/raytheon/edex/plugin/gfe/config/ProjectionDataTest.java @@ -24,7 +24,7 @@ import java.awt.Point; import junit.framework.Assert; import org.junit.Test; -import org.opengis.metadata.spatial.PixelOrientation; +//import org.opengis.metadata.spatial.PixelOrientation; import org.opengis.referencing.FactoryException; import org.opengis.referencing.operation.TransformException; @@ -193,7 +193,7 @@ public class ProjectionDataTest { */ @Test public void testGridCoordinateToLatLon() { - PixelOrientation orientation = PixelOrientation.CENTER; + //PixelOrientation orientation = PixelOrientation.CENTER; for (TestCase testCase : testCases) { System.out @@ -211,12 +211,12 @@ public class ProjectionDataTest { Assert.assertTrue("expected: " + expected.y + ", got: " + latLon.y, withinTolerance(latLon.y, expected.y, TOLERANCE)); - } - catch(TransformException te) { - te.printStackTrace(); } catch(FactoryException fe) { - fe.printStackTrace(); + Assert.fail("Test failed : " + fe.getMessage()); + } + catch(TransformException te) { + Assert.fail("Test failed : " + te.getMessage()); } } } diff --git a/tests/unit/com/raytheon/edex/plugin/gfe/wcl/TestWCLWatchSrv.java b/tests/unit/com/raytheon/edex/plugin/gfe/watch/TestWCLWatchSrv.java similarity index 98% rename from tests/unit/com/raytheon/edex/plugin/gfe/wcl/TestWCLWatchSrv.java rename to tests/unit/com/raytheon/edex/plugin/gfe/watch/TestWCLWatchSrv.java index 3d0a8ae4da..1b7da6d1f9 100644 --- a/tests/unit/com/raytheon/edex/plugin/gfe/wcl/TestWCLWatchSrv.java +++ b/tests/unit/com/raytheon/edex/plugin/gfe/watch/TestWCLWatchSrv.java @@ -17,7 +17,8 @@ * See the AWIPS II Master Rights File ("Master Rights File.pdf") for * further licensing information. **/ -package com.raytheon.edex.plugin.gfe.wcl; +package com.raytheon.edex.plugin.gfe.watch; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -26,16 +27,12 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.io.File; -import java.io.PrintWriter; import java.util.ArrayList; -import java.util.Calendar; import java.util.Collection; -import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; -import java.util.TimeZone; import org.junit.After; import org.junit.Before; diff --git a/tests/unit/com/raytheon/edex/plugin/shef/TestMetarToShefTransformer.java b/tests/unit/com/raytheon/edex/plugin/shef/TestMetarToShefTransformer.java index 12e746ca6b..34a5a9003a 100644 --- a/tests/unit/com/raytheon/edex/plugin/shef/TestMetarToShefTransformer.java +++ b/tests/unit/com/raytheon/edex/plugin/shef/TestMetarToShefTransformer.java @@ -30,9 +30,7 @@ import java.util.Iterator; import org.junit.Test; import com.raytheon.edex.transform.shef.MetarToShefTransformer; -/* 08-26-2014 Issue 3365 IDecoderGettable class no longer exists. - * REMOVED import com.raytheon.uf.common.dataplugin.IDecoderGettable; - */ +// REMOVED IDecoderGettable was removed under Issue 2537 import com.raytheon.uf.common.dataplugin.IDecoderGettable; import com.raytheon.uf.common.dataplugin.PluginDataObject; /** @@ -83,16 +81,13 @@ public class TestMetarToShefTransformer { @Test public void testMetarToShefInteratorB() { PluginDataObject p = new PluginDataObject() { - /* 08-26-2014 Issue 3365 IDecoderGettable class no longer exists. - * REMOVED BEGIN - * + /* REMOVED IDecoderGettable was removed under Issue 2537 BEGIN @Override public IDecoderGettable getDecoderGettable() { return null; } - * 08-26-2014 Issue 3365 IDecoderGettable class no longer exists. - * REMOVED END - */ + REMOVED IDecoderGettable was removed under Issue 2537 END */ + /* * (non-Javadoc) * diff --git a/tests/unit/com/raytheon/uf/common/localization/PathManagerFactoryTest.java b/tests/unit/com/raytheon/uf/common/localization/PathManagerFactoryTest.java new file mode 100644 index 0000000000..73d479737e --- /dev/null +++ b/tests/unit/com/raytheon/uf/common/localization/PathManagerFactoryTest.java @@ -0,0 +1,182 @@ +/** + * This software was developed and / or modified by Raytheon Company, + * pursuant to Contract DG133W-05-CQ-1067 with the US Government. + * + * U.S. EXPORT CONTROLLED TECHNICAL DATA + * This software product contains export-restricted data whose + * export/transfer/disclosure is restricted by U.S. law. Dissemination + * to non-U.S. persons whether in the United States or abroad requires + * an export license or other authorization. + * + * Contractor Name: Raytheon Company + * Contractor Address: 6825 Pine Street, Suite 340 + * Mail Stop B8 + * Omaha, NE 68106 + * 402.291.0100 + * + * See the AWIPS II Master Rights File ("Master Rights File.pdf") for + * further licensing information. + **/ +package com.raytheon.uf.common.localization; + +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.io.IOException; + +import org.junit.Before; +import org.junit.Test; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.BeanFactoryPostProcessor; +import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; + +import com.raytheon.uf.common.localization.LocalizationContext.LocalizationLevel; +import com.raytheon.uf.common.localization.LocalizationContext.LocalizationType; +import com.raytheon.uf.common.localization.TestPathManager.TestLocalizationAdapter; +import com.raytheon.uf.common.util.FileUtil; +import com.raytheon.uf.common.util.TestUtil; + +/** + * Utility class to initialize the test {@link IPathManager} implementation. + * This allows tests to lookup baselined localization files. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date         Ticket#    Engineer    Description
+ * ------------ ---------- ----------- --------------------------
+ * Jul 18, 2012 740        djohnson     Initial creation
+ * Oct 23, 2012 1286       djohnson     Handle executing tests in Eclipse/command-line transparently.
+ * Apr 18, 2013 1914       djohnson     Allow initializing test localization support from Spring.
+ * Jan 08, 2014 2615       bgonzale     Fixes for PropertiesFactory configuration loading in test.
+ * Sep 04, 2014 3365       ccody        Changes for removing Data_Delivery dependencies
+ * 
+ * 
+ * + * @author djohnson + * @version 1.0 + */ + +public class PathManagerFactoryTest implements BeanFactoryPostProcessor { + + private static File savedLocalizationFileDir; + + /** + * Creates a test-only PathManager that can be used during tests. + */ + public static void initLocalization() { + initLocalization("OAX"); + } + + /** + * Creates a test-only PathManager that can be used during tests, it is + * configured for the specified site. + */ + public static void initLocalization(final String site) { + + // Clear known file cache and the directory each time + //This method is no longer supported by PathManager or PathManagerFactory PathManager.fileCache.clear(); + File file = TestUtil.setupTestClassDir(PathManagerFactoryTest.class); + savedLocalizationFileDir = new File(file, "data"); + savedLocalizationFileDir = new File(savedLocalizationFileDir, "utility"); + savedLocalizationFileDir.mkdirs(); + + // But only install the path manager if the test version is not already + // installed + if (!(PathManagerFactory.getPathManager() instanceof TestPathManager)) { + TestLocalizationAdapter adapter = (isRunningInEclipse()) ? new EclipseTestLocalizationAdapter( + site, savedLocalizationFileDir) + : new CommandLineTestLocalizationAdapter(site, + savedLocalizationFileDir); + PathManagerFactory.setAdapter(adapter); + + System.setProperty("edex.home", file.getAbsolutePath()); + File confResDataDir = new File(file, "conf/res"); + confResDataDir.mkdirs(); + File confResTestDataDir = new File("conf/res/"); + + try { + FileUtil.copyDirectory(confResTestDataDir, confResDataDir); + } catch (IOException e) { + throw new RuntimeException( + "Failed to setup test configuration directory conf/res", + e); + } + + } + } + + /** + * Returns true if the JUnit test is running in Eclipse. + * + * @return true if running in Eclipse + */ + private static boolean isRunningInEclipse() { + return new File("..", "edexOsgi").isDirectory(); + } + + /** + * Initializes test localization support before any Spring beans are + * created. + * + * @param beanFactory + * the bean factory + * @throws BeansException + * shouldn't happen + */ + @Override + public void postProcessBeanFactory( + ConfigurableListableBeanFactory beanFactory) throws BeansException { + PathManagerFactoryTest.initLocalization(); + } + + @Before + public void setUp() { + PathManagerFactoryTest.initLocalization(); + } + + @Test + public void testFindingWorkAssignmentPluginLocalizationFile() { + IPathManager pm = PathManagerFactory.getPathManager(); + LocalizationContext lc = pm.getContext(LocalizationType.COMMON_STATIC, + LocalizationLevel.BASE); + + LocalizationFile lf = pm.getLocalizationFile(lc, + "awips2_baseline/obsPurgeRules.xml"); + File file = lf.getFile(); + assertTrue( + "Unable to find work assignment plugin provided localization file!", + file.exists()); + } + + @Test + public void testFindingCommonBaselinePluginLocalizationFile() { + IPathManager pm = PathManagerFactory.getPathManager(); + LocalizationContext lc = pm.getContext(LocalizationType.COMMON_STATIC, + LocalizationLevel.BASE); + + LocalizationFile lf = pm.getLocalizationFile(lc, + "site3LetterTo4LetterOverride.dat"); + File file = lf.getFile(); + assertTrue( + "Unable to find common baseline plugin provided localization file!", + file.exists()); + } + + @Test + public void testFindingFileCreatesVersionInTestDirectory() { + IPathManager pm = PathManagerFactory.getPathManager(); + LocalizationContext lc = pm.getContext(LocalizationType.COMMON_STATIC, + LocalizationLevel.BASE); + + LocalizationFile lf = pm.getLocalizationFile(lc, + "site3LetterTo4LetterOverride.dat"); + File file = lf.getFile(); + assertTrue( + "Localization file does not seem to have been copied!", + file.getParentFile().getAbsolutePath() + .startsWith(savedLocalizationFileDir.getAbsolutePath())); + } + +} diff --git a/tests/unit/com/raytheon/uf/common/message/TestWsIdAdapter.java b/tests/unit/com/raytheon/uf/common/message/TestWsIdAdapter.java index adb92a3e61..832d4d7d69 100644 --- a/tests/unit/com/raytheon/uf/common/message/TestWsIdAdapter.java +++ b/tests/unit/com/raytheon/uf/common/message/TestWsIdAdapter.java @@ -21,11 +21,12 @@ package com.raytheon.uf.common.message; import java.net.InetAddress; import java.net.UnknownHostException; -import java.util.Random; +//import java.util.Random; import org.junit.Assert; import com.raytheon.uf.common.serialization.DynamicSerializationManager; +import com.raytheon.uf.common.serialization.DynamicSerializationManager.SerializationMetadata; import com.raytheon.uf.common.serialization.DynamicSerializationManager.SerializationType; import com.raytheon.uf.common.serialization.annotations.DynamicSerialize; import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement; @@ -51,7 +52,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement; * @version 1.0 */ public class TestWsIdAdapter { - private Random rnd = new Random(); + //private Random rnd = new Random(); @DynamicSerialize public static class Test { @@ -94,14 +95,10 @@ public class TestWsIdAdapter { DynamicSerializationManager dmgr = DynamicSerializationManager .getManager(SerializationType.Thrift); - /* 08-26-2014 Issue 3365 DynamicSerializationManager API has changed. - * REMOVED BEGIN - * - DynamicSerializationManager.inspect(inTest.getClass()); - DynamicSerializationManager.inspect(wsId.getClass()); - * 08-26-2014 Issue 3365 DynamicSerializationManager API has changed. - * REMOVED END - */ + SerializationMetadata sm1 = DynamicSerializationManager.getSerializationMetadata(inTest.getClass()); + //REMOVED DynamicSerializationManager.inspect(inTest.getClass()); + SerializationMetadata sm2 = DynamicSerializationManager.getSerializationMetadata(wsId.getClass()); + //REMOVED DynamicSerializationManager.inspect(wsId.getClass()); byte[] bdata = null; try { bdata = dmgr.serialize(inTest); diff --git a/tests/unit/com/raytheon/uf/common/util/ConvertUtilsTest.java b/tests/unit/com/raytheon/uf/common/util/ConvertUtilsTest.java index cef835d4c3..9ec159477b 100644 --- a/tests/unit/com/raytheon/uf/common/util/ConvertUtilsTest.java +++ b/tests/unit/com/raytheon/uf/common/util/ConvertUtilsTest.java @@ -17,6 +17,7 @@ import com.raytheon.uf.common.convert.ConvertUtil; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * Jun 11, 2013 bclement Initial creation + * Sep 04, 2014 3365 ccody Changes for removing Data_Delivery dependencies * * * diff --git a/tests/unit/com/raytheon/uf/edex/core/modes/EdexModeTest.java b/tests/unit/com/raytheon/uf/edex/core/modes/EdexModeTest.java index a012d1a235..6be6ec6fe5 100644 --- a/tests/unit/com/raytheon/uf/edex/core/modes/EdexModeTest.java +++ b/tests/unit/com/raytheon/uf/edex/core/modes/EdexModeTest.java @@ -21,14 +21,15 @@ package com.raytheon.uf.edex.core.modes; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import java.io.File; -import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; +import java.util.ArrayList; import java.util.Map; import java.util.HashMap; + import org.junit.Test; import com.raytheon.uf.edex.core.modes.EdexMode; @@ -44,6 +45,7 @@ import com.raytheon.uf.edex.core.modes.EdexMode; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * Sep 20, 2012 1187 djohnson Initial creation + * Sep 04, 2014 3365 ccody Changes for removing Data_Delivery dependencies * * * @@ -56,32 +58,29 @@ public class EdexModeTest { @Test public void testExcludedPatternByIncludedModeIsExcluded() { - /* EdexMode(List includeList, List excludeList, - ArrayList arrayList) */ - - List includeList = new ArrayList(); - includeList.add(".*include.*"); - List excludeList = new ArrayList(); - excludeList.add(".*exclude.*"); - ArrayList emptyList = new ArrayList(); - - EdexMode includedMode = new EdexMode(includeList, - excludeList, emptyList); - - List someotherList = new ArrayList(); - someotherList.add(".*someother.*"); - List excludeEmptyList = new ArrayList(); - ArrayList modeList = new ArrayList(); - //TODO HERE THIS WILL NOT WORK modeList.add(includedMode); - EdexMode mode = new EdexMode(someotherList, excludeEmptyList, - modeList); + List includeList = Arrays.asList(".*include.*"); + List excludeList = Arrays.asList(".*exclude.*"); + List emptyList = new ArrayList(); + EdexMode includedMode = new EdexMode( + includeList, + excludeList, + emptyList); + /* (List includeList, List excludeList, + List includedModes) */ + List someotherList = Arrays.asList(".*someother.*"); + List includedModeList = new ArrayList(); + includedModeList.add(includedMode.getName()); + Arrays.asList(".*exclude.*"); + EdexMode mode = new EdexMode(someotherList, + emptyList, includedModeList); Map allModes = new HashMap(); try { mode.init(allModes); } - catch(Exception ex) { - ex.printStackTrace(); + catch(ModesException me) { + me.printStackTrace(); + fail(); } File file = new File("./res/spring/exclude.xml"); @@ -90,24 +89,29 @@ public class EdexModeTest { @Test public void testIncludedPatternByIncludedModeCanBeExcluded() { - /* EdexMode includedMode = new EdexMode(Arrays.asList(".*include.*"), - Collections. emptyList(), - Collections. emptyList());*/ - List includeList = new ArrayList(); - includeList.add(".*include.*"); - List excludeList = new ArrayList(); - ArrayList emptyList = new ArrayList(); - - EdexMode includedMode = new EdexMode(includeList, - excludeList, emptyList); - -/* TODO HERE REINSTATE - EdexMode mode = new EdexMode(Collections. emptyList(), - Arrays.asList(".*include.*"), Arrays.asList(includedMode)); - mode.init(); + List includeList = Arrays.asList(".*include.*"); + List emptyList = new ArrayList(); + EdexMode includedMode = new EdexMode(includeList, + emptyList, + emptyList); + + List includedModeList = new ArrayList(); + includedModeList.add(includedMode.getName()); + + EdexMode mode = new EdexMode(emptyList, + includeList, includedModeList); + + + Map allModes = new HashMap(); + try { + mode.init(allModes); + } + catch(ModesException me) { + me.printStackTrace(); + fail(); + } File file = new File("./res/spring/include.xml"); assertFalse(mode.accept(file, file.getAbsolutePath())); - */ } } diff --git a/tests/utility/common_static/base/awips2_baseline/obsPurgeRules.xml b/tests/utility/common_static/base/awips2_baseline/obsPurgeRules.xml new file mode 100644 index 0000000000..95590a4599 --- /dev/null +++ b/tests/utility/common_static/base/awips2_baseline/obsPurgeRules.xml @@ -0,0 +1,23 @@ + + + + 34 + =00-01:00:00 + 00-01:00:00 + + + 15 + =00-03:00:00 + 00-01:00:00 + + + 11 + =00-06:00:00 + 00-01:00:00 + + + 10 + =01-00:00:00 + +00-12:00:00 + +