#!/usr/bin/env python
# @(#) $Id: acspyTestEpochHelper,v 1.1.1.1 2012/03/07 17:40:45 acaproni Exp $
#
# Copyright (C) 2001
# Associated Universities, Inc. Washington DC, USA.
#
# Produced for the ALMA project
#
# This library is free software; you can redistribute it and/or modify it
# under
# the terms of the GNU Library General Public License as published by the Free
# Software Foundation; either version 2 of the License, or (at your option)
# any
# later version.
#
# This library is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for
# more
# details.
#
# You should have received a copy of the GNU Library General Public License
# along with this library; if not, write to the Free Software Foundation,
# Inc.,
# 675 Massachusetts Ave, Cambridge, MA 02139, USA.  Correspondence concerning
# ALMA should be addressed as follows:
#
# Internet email: alma-sw-admin@nrao.edu
'''
'''
#--REGULAR IMPORTS-------------------------------------------------------------

import acstime
from Acspy.Common.TimeHelper     import getTimeStamp
from Acspy.Common.EpochHelper    import EpochHelper
from Acspy.Common.DurationHelper import DurationHelper
#------------------------------------------------------------------------------
print "DWF...need a real test here!!!"

# format string using all possible
allOut = "%G %g %x\n%Y %y %m %h %j %d %e %w %a %H:%M:%S.%q %1q %2q %3q %4q %5q %6q"

e1 = EpochHelper()	
e2 = EpochHelper()
	
d1 = DurationHelper()
	
# create an Epoch structure
eout = getTimeStamp()
	
e1.value(eout)
	
pStr = e1.toString(acstime.TSArray,
                   "%x",
                   0L, 
                   0L)
	
#print "Current time is " , pStr 

# test Epoch range & toUTUdate(), toJulianYear()
eout.value = 0xFFFFFFFFFFFFFFFA
e1.value(eout)
	
pStr = e1.toString(acstime.TSArray,"", 0L, 0L)
	
print pStr 
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 
utc = e1.toUTCdate(0L, 0L)

julian = e1.toJulianYear(0L, 0L)

#mjdSeconds = e1.toMJDseconds()
	
print utc, julian  #, mjdSeconds 

eout.value = 0L
e1.value(eout)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 
utc = e1.toUTCdate(0L, 0L)
	
julian = e1.toJulianYear(0L, 0L)
	
#mjdSeconds = e1.toMJDseconds()
print utc, julian  #, mjdSeconds 
	
e1.fromString(acstime.TSArray,
              "60038-3-11T5:36:10.955161")
	
eout = e1.value()
	
print eout.value
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 

e1.fromString(acstime.TSArray,
              "1582-10-15T00:00:00.000000")
	
eout = e1.value()
	
print eout.value
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 
	
e1.fromString(acstime.TSArray,
              "1995-4-28T17:23:15.654321")
	
eout = e1.value()
	
print eout.value
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 
utc = e1.toUTCdate(0L, 0L)

julian = e1.toJulianYear(0L, 0L)

#mjdSeconds = e1.toMJDseconds()

print utc, julian #, mjdSeconds 

# test Epoch usec implicit trailing zeroes
e1.fromString(acstime.TSArray,
              "1776-7-4T17:23:15.5")
	
pStr = e1.toString(acstime.TSArray,"%x",0L, 0L)
	
print pStr 
e1.fromString(acstime.TSArray,
              "2345-6-7T08:09:00.103")
	
pStr = e1.toString(acstime.TSArray,"%x",0L, 0L)

print pStr 
e1.fromString(acstime.TSArray,
              "2001-9-11T06:54:32.0506")
	
pStr = e1.toString(acstime.TSArray,"%x",0L, 0L)
	
print pStr 

# test Epoch.add()
e1.fromString(acstime.TSArray,
              "1943-04-05 05:36:10.955161")
	
eout = e1.value()
	
e2.value(eout)

d1.fromString("+1 02:03:04.567890")

e1.add(d1.value())
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 

# test Epoch.difference()
d2_val = e1.difference(e2.value())
	
d2 = DurationHelper(d2_val)
pStr = d2.toString("")
	
print pStr 
	
# test Epoch.subtract()
e1.subtract(d1.value())

pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)

print pStr 

# test Epoch.compare() using Epoch.now()
eout = getTimeStamp()
	
e1.value(eout)

import time
time.sleep(8e-6)

eout = getTimeStamp()
	
e2.value(eout)
	
tcom = e1.compare(e2.value())
print tcom
tcom = e2.compare(e1.value())

print tcom
tcom = e1.compare(e1.value())

print tcom

# test Epoch setting by parts
e1.reset()

e1.year(1995)

e1.month(4)

e1.day(28)

e1.hour(17)

e1.minute(23)

e1.second(15)

e1.microSecond(654321)

eout = e1.value()

print eout.value
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 

e1.reset()

e1.year(1995)

e1.dayOfYear(118)

eout = e1.value()

print eout.value
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 

# test Epoch getting by parts
print e1.year(), e1.month(), e1.day(), e1.dayOfYear(), e1.dayOfWeek(), e1.hour(), e1.minute(), e1.second(), e1.microSecond()

# test Epoch.normalize() switch
e1.normalize(1)

e1.fromString(acstime.TSArray,
              "1900-13-32T25:67:71.955161")

pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)

print pStr 

# test get/set microSecond value w/ normalize true
lngtmp = e1.microSecond()
	
e1.microSecond(lngtmp - 1111111)

pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)

print pStr 
e1.microSecond(lngtmp + 1111111)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 

# test get/set second value w/ normalize true
lngtmp = e1.second()

e1.second(lngtmp - 61)

pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)

print pStr 
e1.second(lngtmp + 61)


pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 

# test get/set minute value w/ normalize true
lngtmp = e1.minute()

e1.minute(lngtmp - 61)

pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 
e1.minute(lngtmp + 61)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)

print pStr 

# test get/set hour value w/ normalize true
lngtmp = e1.hour()
	
e1.hour(lngtmp - 25)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 
e1.hour(lngtmp + 25)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 

# test get/set day value w/ normalize true (non-leap year)
e1.fromString(acstime.TSArray,
              "1901-02-26T21:18:37.955161")
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)

print pStr

lngtmp = e1.day()
	
e1.day(lngtmp - 12)

pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)

print pStr 
e1.day(lngtmp + 12)

pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)

print pStr 

e1.fromString(acstime.TSArray, "1901-03-02T12:16:43.955161")

pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)

print pStr 
lngtmp = e1.day()

e1.day(lngtmp - 12)

pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)

print pStr 
e1.day(lngtmp + 12)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)

print pStr 

# test get/set day value w/ normalize true (leap year)
e1.fromString(acstime.TSArray,"1904-02-26T08:53:12.955161")
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)

print pStr 
lngtmp = e1.day()

e1.day(lngtmp - 12)

pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)

print pStr 
e1.day(lngtmp + 12)

pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)

print pStr 

e1.fromString(acstime.TSArray, "1904-03-02T18:37:21.955161")
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 
lngtmp = e1.day()
	
e1.day(lngtmp - 12)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 
e1.day(lngtmp + 12)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 

# test get/set day-of-year value w/ normalize true (non-leap year)
e1.fromString(acstime.TSArray, "1901-02-26T21:18:37.955161")
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 
lngtmp = e1.dayOfYear()
	
e1.dayOfYear(lngtmp - 58)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 
e1.dayOfYear(lngtmp + 12)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 

e1.fromString(acstime.TSArray,"1901-03-02T12:16:43.955161")
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 
lngtmp = e1.dayOfYear()
	
e1.dayOfYear(lngtmp - 12)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 
e1.dayOfYear(lngtmp + 12)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 

# test get/set day-of-year value w/ normalize true (leap year)
e1.fromString(acstime.TSArray,"1904-02-26T08:53:12.955161")
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 
lngtmp = e1.dayOfYear()
	
e1.dayOfYear(lngtmp - 12)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 
e1.dayOfYear(lngtmp + 12)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 

e1.fromString(acstime.TSArray,"1904-03-02T18:37:21.955161")
                          
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)

print pStr 
lngtmp = e1.dayOfYear()
	
e1.dayOfYear(lngtmp - 12)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 
e1.dayOfYear(lngtmp + 12)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 

# test get/set month value w/ normalize true
e1.fromString(acstime.TSArray, "1904-02-14T18:37:21.955161")
	
lngtmp = e1.month()
	
e1.month(lngtmp - 12)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 
e1.month(lngtmp + 12)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 
        
# test get/set year value w/ normalize true
lngtmp = e1.year()
	
e1.year(lngtmp - 12)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 
e1.year(lngtmp + 12)
	
pStr = e1.toString(acstime.TSArray,allOut,0L, 0L)
	
print pStr 



#------------------------------------------------------------------------------
