Getting there :)

But still fails the unit tests - resulting in:

1
Failed adding 1 to 2002,1,31,1,0,0,5. Resulted in 1
2
Failed adding 2 to 2002,1,31,1,0,0,5. Resulted in 2
4
5
6
7
8
9
10
10
Failed adding 10 to 2002,1,31,1,0,0,5. Resulted in 10

Which looks like is kind of one out of the loop - NB I like your evaluation
of leap years - is that all there is to it? Taking a look at the code now to
see where it is going wrong...


on mouseUp
   -- unit test

   put "2002,1,31,1,0,0,5" into abbeyStartDate
   put 1 into lastMonth
   repeat with statementNumber = 1 to 10
       put item 2 of date_AddMonth(statementNumber, abbeyStartDate) into
someMonth
       put someMonth
       if statementNumber mod 12 is not (someMonth - 1) then
           put merge("Failed adding [[statementNumber]] to
[[abbeyStartDate]]. Resulted in [[someMonth]]")
       end if
   end repeat
end mouseUp

function date_AddMonth monthNum, startDate
   convert startDate to dateItems    # does not work if startDate is a
system date
   put item 3 of startDate into theDay
   put 1 into item 3 of startDate
   add monthNum to item 2 of startDate
   convert startDate from dateItems to dateItems
   put item 2 of startDate into theMonth
   put item 1 of startDate into theYear
   put getMaxDays(theMonth, theYear) into maxDay
   if theDay > maxDay then
       put maxDay into theDay
   end if
   put theDay into item 3 of startDate
   --convert startDate from dateItems to <favorite date format>
   return startDate
end date_AddMonth

function getMaxDays theMonth, theYear
   put "1,January,3,March,5,May,7,July,8,August,10,October,12,December"
into Months31
   put "4,April,6,June,9,September,11,November" into Months30
   if theMonth is among the items of Months31 then
       put 31 into HowManyDays
   else if theMonth is among the items of Months30 then
       put 30 into HowManyDays
   else --February
       if (theYear mod 400 = 0) or (theYear mod 100 <> 0) and (theYear mod
4 = 0) then
           put 29 into HowManyDays -- leap year
       else
           put 28 into HowManyDays
       end if
   end if
   return HowManyDays
end getMaxDays
_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to