⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ty2k.tpl

📁 在手机操作系统symbina上使用的一个脚本扩展语言的代码实现,可以参考用于自己的开发
💻 TPL
字号:
REM ty2k.tpl
REM EPOC OPL automatic test code for Y2K and later date checks.
REM Copyright (c) 1991-2000 Symbian Ltd. All rights reserved.

INCLUDE "Const.oph"
INCLUDE "hUtils.oph"
INCLUDE "date.oxh"

PROC Standalone:
	REM Main procedure called when not running inside test harness.
	LOADM KhUtils$
	hLink:( "ty2k", hThreadIdFromOplDoc&:, KhUserFull%)
	REM After standalone completion, control returns here.
	dINIT "Tests complete" :DIALOG
ENDP


proc ty2k:
	rem hInitTestHarness:(KhInitLocalErrorHandling%, KhInitNotUsed%)
	hRunTest%:("doY2K")
	rem hCleanUp%:("CleanUp")
endp



PROC doY2k:
	GLOBAL gyear%,gmonth%,gday%,ghour%,gminute%,gsecond%
	GLOBAL gres1&,gres3&,gres5&
	GLOBAL gDateId&

	LOCAL year%(6),month%(6),day%(6), hour%(6), minute%(6), second%(6)
	LOCAL res1&(6),res3&(6),res5&(6)
	LOCAL count%

	REM Set up the test date array.
	year%(1)=1999 :year%(2)=2000 :year%(3)=2000 :year%(4)=2000 :year%(5)=2004 :year%(6)=2004
	month%(1)=12  :month%(2)=1   :month%(3)=2   :month%(4)=2   :month%(5)=2  :month%(6)=2
	day%(1)=31    :day%(2)=1     :day%(3)=28    :day%(4)=29    :day%(5)=28    :day%(6)=29
	hour%(1)=23   :hour%(2)=0    :hour%(3)=23   :hour%(4)=0    :hour%(5)=23   :hour%(6)=0
	minute%(1)=59 :minute%(2)=0  :minute%(3)=59 :minute%(4)=0  :minute%(5)=59 :minute%(6)=0
	second%(1)=59 :second%(2)=0  :second%(3)=59 :second%(4)=0  :second%(5)=59 :second%(6)=0

	REM Expected results
	REM Seconds since 00:00 1/1/1970
	res1&(1)=946684799 :res1&(2)=res1&(1)+1 :res1&(3)=951782399 :res1&(4)=res1&(3)+1 :res1&(5)=1078012799 :res1&(6)=res1&(5)+1

	REM days since 1/1/1900
	res3&(1)=36523 :res3&(2)=res3&(1)+1 :res3&(3)=36582 :res3&(4)=res3&(3)+1 :res3&(5)=38043 :res3&(6)=res3&(5)+1

	REM Day of week (1=monday)
	res5&(1)=5 :res5&(2)=6 :res5&(3)=1 :res5&(4)=2 :res5&(5)=6 :res5&(6)=7
	
	FONT 12,0
	PRINT "Year 2000 testing for OPL"
	
	REM Run through the tests twice; once with the system
	REM clock set before 1/1/2000, and once after.

	count%=1	
	DO
		gyear%=year%(count%)
		gmonth%=month%(count%)
		gday%=day%(count%)
		ghour%=hour%(count%)
		gminute%=minute%(count%)
		gsecond%=second%(count%)
		gres1&=res1&(count%)
		gres3&=res3&(count%)
		gres5&=res5&(count%)

		PRINT
		PRINT "Test date is " + TestDate$:

		Test1:
		Test3:
		Test5:
		Test6:

		Test8:

		REM Create id.
		gDateId&=DtNewDateTime&:(gyear%,gmonth%,gday%,ghour%,gminute%,gsecond%,0)

		Test9:
		Test10:
		REM Kill it.
		DtDeleteDateTime:(gDateId&)

		count%=count%+1
	UNTIL count%>6
ENDP



PROC ASSERT:(e%)
	IF e%
		RETURN 0
	ENDIF
	RETURN -7 REM "Out of range"
rem 	dINIT "Test failed!"
ENDP


PROC TestDate$:
	RETURN f2$:(gHour%)+":"+f2$:(gMinute%)+":"+f2$:(gSecond%)+" "+f2$:(gDay%)+"/"+f2$:(gMonth%)+"/"+GEN$(gYear%,4)
ENDP


PROC f2$:(val%)
	RETURN RIGHT$("0"+GEN$(val%,2),2)
ENDP


PROC Test1:	REM DATETOSECS
	LOCAL s&, err%
	PRINT "DATETOSECS()"
	s&=DATETOSECS(gyear%,gmonth%,gday%,ghour%,gminute%,gsecond%)
	err%=Assert:(s&=gres1&)
	IF err%
		RAISE err%
	ENDIF
ENDP



PROC Test3:	REM DAYS
	LOCAL s&,err%
	PRINT "DAYS()"
	s&=DAYS(gday%,gmonth%,gyear%)
	err%=Assert:(s&=gres3&)
	IF err%
		RAISE err%
	ENDIF
ENDP



PROC Test5:	REM DOW
	LOCAL s&,err%
	PRINT "DOW()"
	s&=DOW(gday%,gmonth%,gyear%)
	err%=Assert:(s&=gres5&)
	IF err%
		RAISE err%
	ENDIF
ENDP


PROC Test6:	REM SECSTODATE
	LOCAL s&, err%, res%
	LOCAL ryear%, rmonth%, rday%, rhour%, rminute%, rsecond%
	LOCAL ignore%
	s&=gres1&
	PRINT "SECSTODATE()"
	SECSTODATE s&, ryear%,rmonth%,rday%,rhour%,rminute%,rsecond%,ignore%
	res%=(ryear%=gyear%)+(rmonth%=gmonth%)+(rday%=gday%)+(rhour%=ghour%)+(rminute%=gminute%)+(rsecond%=gsecond%)
	err%=Assert:(res%=-6)
	IF err%
		RAISE err%
	ENDIF
ENDP


PROC Test8:	REM DAYSTODATE
	LOCAL s&, err%, res%
	LOCAL ryear%, rmonth%, rday%
	s&=gres3&
	PRINT "DAYSTODATE()"
	DAYSTODATE s&, ryear%,rmonth%,rday%
	res%=(ryear%=gyear%)+(rmonth%=gmonth%)+(rday%=gday%)
	err%=Assert:(res%=-3)
	IF err%
		RAISE err%
	ENDIF
ENDP


PROC Test9:	REM DtYear&:
	LOCAL s&,err%
	PRINT "DtYear&:()"
	s&=DtYear&:(gDateId&)
	err%=Assert:(s&=gyear%)
	IF err%
		RAISE err%
	ENDIF
ENDP


PROC Test10:	REM DtSetYear
	LOCAL s&,err%
	PRINT "DtSetYear:()"
	DtSetYear:(gDateId&,gYear%)
	REM Now read it back.
	s&=DtYear&:(gDateId&)
	err%=Assert:(s&=gyear%)
	IF err%
		RAISE err%
	ENDIF
ENDP

REM End.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -