class TestCase::Lib::Time {
  use Time;
  
  static method test_time : long () {
    my $time = Time->time;
    
    return $time;
  }

  static method test_localtime : Time::Info ($time : long) {
    my $time_info = Time->localtime($time);
    
    return $time_info;
  }

  static method test_gmtime : Time::Info ($time : long) {
    my $time_info = Time->gmtime($time);
    
    return $time_info;
  }

  static method test_timelocal : int () {
    {
      my $time = Time->time();
      
      my $time_info = Time->localtime($time);
      
      my $time_ret = Time->timelocal($time_info);
      
      unless ($time_ret isa long) {
        return 0;
      }
      unless ($time == $time_ret) {
        return 0;
      }
    }
    
    return 1;
  }

  static method test_timegm : int () {
    {
      my $time = Time->time();
      
      my $time_info = Time->gmtime($time);
      
      my $time_ret = Time->timegm($time_info);

      unless ($time_ret isa long) {
        return 0;
      }
      unless ($time == $time_ret) {
        return 0;
      }
    }
    
    return 1;
  }

}