Astro-satpass

 view release on metacpan or  search on metacpan

t/tle_pass_extra.t  view on Meta::CPAN


is format_pass( $pass[6] ), <<'EOD', 'Pass 7';
2011/04/28 21:43:59  10.0 258.6  1309.6 lit   rise
2011/04/28 21:44:48  13.9 244.5  1106.9 shdw  shdw
2011/04/28 21:45:59  16.9 215.3   978.9 shdw  max
2011/04/28 21:48:00   9.9 171.4  1309.0 shdw  set
EOD

is format_pass( $pass[7] ), <<'EOD', 'Pass 8';
2011/04/29 20:32:50  10.0 272.4  1312.6 lit   rise
2011/04/29 20:35:31  32.6 205.9   614.1 lit   max
2011/04/29 20:36:43  22.6 160.3   805.6 shdw  shdw
2011/04/29 20:38:11  10.0 139.9  1308.8 shdw  set
EOD

is format_pass( $pass[8] ), <<'EOD', 'Pass 9';
2011/04/30 20:57:40  10.0 257.8  1310.6 lit   rise
2011/04/30 20:59:38  16.5 215.4   995.9 lit   max
2011/04/30 21:00:03  16.0 204.4  1012.0 shdw  shdw
2011/04/30 21:01:35  10.0 173.2  1305.2 shdw  set
EOD

is format_pass( $pass[9] ), <<'EOD', 'Pass 10';
2011/05/01 19:46:23  10.1 272.1  1309.5 lit   rise
2011/05/01 19:49:02  31.8 206.8   624.9 lit   max
2011/05/01 19:51:42   9.9 140.9  1309.4 lit   set
EOD


# Purpose of test: Confirm that extremely short passes are reported
# reliably, and have their maximum elevations correctly calculated.

$sta = Astro::Coord::ECI->new(
    name	=> 'Bogota',
)->geodetic(
    deg2rad( 4.656370 ),
    deg2rad( -74.117790 ),
    46 / 1000,
);
$tle->set( horizon => deg2rad( 11 ), twilight => deg2rad( -3 ) );

@pass = ();
$offset = 34;
if ( eval {
	@pass = $tle->pass(
	    $sta,
	    timegm( $offset, 0, 17, 13, 4, 111 ),
	    timegm( $offset, 0, 17, 20, 4, 111 ),
	    [ $moon ],
	);
	1;
    } ) {
    ok @pass == 7,
	"Found 7 passes over Bogota at $offset sec after minute"
	or diag "Found @{[ scalar @pass ]} passes over Bogota";
} else {
    fail "Error in pass() method: $@";
}

is format_pass( $pass[0] ), <<'EOD', 'Pass 1';
2011/05/14 00:32:45  11.0 244.1  1237.5 lit   rise
2011/05/14 00:33:11  11.3 234.9  1223.3 lit   max
2011/05/14 00:33:39  11.0 225.1  1239.4 lit   set
EOD

is format_pass( $pass[1] ), <<'EOD', 'Pass 2';
2011/05/14 23:19:14  11.1 319.6  1232.4 lit   rise
2011/05/14 23:21:58  73.2 232.8   359.7 lit   max
2011/05/14 23:24:43  10.9 149.4  1245.3 lit   set
EOD

is format_pass( $pass[2] ), <<'EOD', 'Pass 3';
2011/05/15 23:45:28  11.0 237.6  1238.1 lit   rise
2011/05/15 23:45:36  11.0 234.8  1236.9 lit   max
2011/05/15 23:45:44  11.0 232.0  1238.3 lit   set
EOD

is format_pass( $pass[3] ), <<'EOD', 'Pass 4';
2011/05/17 09:59:17  11.0 154.7  1236.0 lit   rise
2011/05/17 10:00:38  13.9 125.1  1091.2 lit   max
2011/05/17 10:01:59  11.0  95.5  1236.0 lit   set
EOD

is format_pass( $pass[4] ), <<'EOD', 'Pass 5';
2011/05/18 10:21:25  11.1 217.9  1230.4 lit   rise
2011/05/18 10:24:09  81.8 307.8   347.4 lit   max
2011/05/18 10:26:53  11.0  33.4  1233.7 lit   set
EOD

is format_pass( $pass[5] ), <<'EOD', 'Pass 6';
2011/05/19 09:11:21  11.0 155.1  1233.2 shdw  rise
2011/05/19 09:12:10  13.4 138.2  1109.8 lit   lit
2011/05/19 09:12:43  14.0 125.1  1084.3 lit   max
2011/05/19 09:14:06  10.9  94.7  1237.1 lit   set
EOD

is format_pass( $pass[6] ), <<'EOD', 'Pass 7';
2011/05/20 09:33:24  11.1 218.1  1230.7 shdw  rise
2011/05/20 09:35:30  50.2 226.7   439.8 shdw  apls
                     50.3 226.0     0.5 Moon
2011/05/20 09:35:31  50.6 226.9   437.4 lit   lit
2011/05/20 09:36:08  81.0 307.4   347.6 lit   max
2011/05/20 09:38:52  11.0  33.1  1233.7 lit   set
EOD


# Purpose of test: Confirm that extremely short passes are reported
# reliably, and have their maximum elevations correctly calculated.

@pass = ();
$offset = 44;
if ( eval {
	@pass = $tle->pass(
	    $sta,
	    timegm( $offset, 0, 17, 13, 4, 111 ),
	    timegm( $offset, 0, 17, 20, 4, 111 ),
	    [ $moon ],
	);
	1;
    } ) {
    ok @pass == 7,
	"Found 7 passes over Bogota at $offset sec after minute"
	or diag "Found @{[ scalar @pass ]} passes over Bogota";
} else {
    fail "Error in pass() method: $@";
}

is format_pass( $pass[0] ), <<'EOD', 'Pass 1';
2011/05/14 00:32:45  11.0 244.1  1237.5 lit   rise
2011/05/14 00:33:11  11.3 234.9  1223.3 lit   max
2011/05/14 00:33:39  11.0 225.1  1239.4 lit   set
EOD

is format_pass( $pass[1] ), <<'EOD', 'Pass 2';
2011/05/14 23:19:14  11.1 319.6  1232.4 lit   rise
2011/05/14 23:21:58  73.2 232.8   359.7 lit   max
2011/05/14 23:24:43  10.9 149.4  1245.3 lit   set
EOD

is format_pass( $pass[2] ), <<'EOD', 'Pass 3';
2011/05/15 23:45:28  11.0 237.6  1238.1 lit   rise
2011/05/15 23:45:36  11.0 234.8  1236.9 lit   max
2011/05/15 23:45:44  11.0 232.0  1238.3 lit   set
EOD

is format_pass( $pass[3] ), <<'EOD', 'Pass 4';
2011/05/17 09:59:17  11.0 154.7  1236.0 lit   rise
2011/05/17 10:00:38  13.9 125.1  1091.2 lit   max
2011/05/17 10:01:59  11.0  95.5  1236.0 lit   set
EOD

is format_pass( $pass[4] ), <<'EOD', 'Pass 5';
2011/05/18 10:21:25  11.1 217.9  1230.4 lit   rise
2011/05/18 10:24:09  81.8 307.8   347.4 lit   max
2011/05/18 10:26:53  11.0  33.4  1233.7 lit   set
EOD

is format_pass( $pass[5] ), <<'EOD', 'Pass 6';
2011/05/19 09:11:21  11.0 155.1  1233.2 shdw  rise
2011/05/19 09:12:10  13.4 138.2  1109.8 lit   lit
2011/05/19 09:12:43  14.0 125.1  1084.3 lit   max
2011/05/19 09:14:06  10.9  94.7  1237.1 lit   set
EOD

# Purpose of test: Confirm that appulses are correctly reported.

is format_pass( $pass[6] ), <<'EOD', 'Pass 7';
2011/05/20 09:33:24  11.1 218.1  1230.7 shdw  rise
2011/05/20 09:35:30  50.2 226.7   439.8 shdw  apls
                     50.3 226.0     0.5 Moon
2011/05/20 09:35:31  50.6 226.9   437.4 lit   lit
2011/05/20 09:36:08  81.0 307.4   347.6 lit   max
2011/05/20 09:38:52  11.0  33.1  1233.7 lit   set
EOD


# Purpose of test: confirm that passes in progress at the beginning of
# the prediciton interval are correctly reported.

$sta = Astro::Coord::ECI->new(
    name	=> 'Sao Paulo',
)->geodetic(
    deg2rad( -23.55 ),
    deg2rad( -46.6333333333333 ),
    0,
);


( $tle ) = get_oid( '03597', @all_tle );
$tle->set( visible => 0 );

@pass = ();
$offset = 0;

if ( eval {
	@pass = $tle->pass(
	    $sta,
	    timegm( $offset, 0, 12, 27, 4, 111 ),
	    timegm( $offset, 0, 13, 27, 4, 111 ),
	    [ $moon ],
	);
	1;
    } ) {
    ok @pass == 1,
	"Found 1 pass of OAO 2 over Sao Paulo at $offset sec after minute"
	or diag "Found @{[ scalar @pass ]} passes over Sao Paulo";
} else {
    fail "Error in pass() method: $@";
}

is format_pass( $pass[0] ), <<'EOD', 'Pass 1 of OAO 2 over Sao Paulo';
2011/05/27 11:58:17  20.0 204.7  1678.3 day   rise
2011/05/27 11:59:57  23.2 178.2  1545.7 day   max
2011/05/27 12:01:38  20.0 151.4  1681.3 day   set

t/tle_pass_extra.t  view on Meta::CPAN

# the illumination.

( $tle ) = get_oid( '00733', @all_tle );

@pass = ();
$offset = 0;
if ( eval {
	$tle->set( interval => 1 );
	@pass = $tle->pass(
	    $sta,
	    timegm( $offset, 0, 14, 30, 4, 111 ),
	    timegm( $offset, 0, 16, 30, 4, 111 ),
	    [ $moon ],
	);
	1;
    } ) {
    ok @pass == 1,
	"Found 1 pass of OID 00733 over Shanghai at $offset sec after minute"
	or diag "Found @{[ scalar @pass ]} passes over Shanghai";
} else {
    fail "Error in pass() method: $@";
}

is format_pass( $pass[0] ), <<'EOD', 'Pass 1 of OID 00733 over Shanghai';
2011/05/30 14:12:20  20.0 234.7  1759.9 shdw  rise
2011/05/30 14:12:21  20.1 234.9  1757.1 shdw
2011/05/30 14:12:22  20.2 235.2  1754.2 shdw
2011/05/30 14:12:23  20.2 235.4  1751.3 shdw
2011/05/30 14:12:24  20.3 235.6  1748.5 shdw
2011/05/30 14:12:25  20.3 235.9  1745.7 shdw
2011/05/30 14:12:26  20.4 236.1  1743.0 shdw
2011/05/30 14:12:27  20.5 236.3  1740.2 shdw
2011/05/30 14:12:28  20.5 236.6  1737.5 shdw
2011/05/30 14:12:29  20.6 236.8  1734.8 shdw
2011/05/30 14:12:30  20.6 237.1  1732.1 shdw
2011/05/30 14:12:31  20.7 237.3  1729.4 shdw
2011/05/30 14:12:32  20.7 237.6  1726.8 shdw
2011/05/30 14:12:33  20.8 237.8  1724.2 shdw
2011/05/30 14:12:34  20.9 238.0  1721.6 shdw
2011/05/30 14:12:35  20.9 238.3  1719.1 shdw
2011/05/30 14:12:36  21.0 238.5  1716.5 shdw
2011/05/30 14:12:37  21.0 238.8  1714.0 shdw
2011/05/30 14:12:38  21.1 239.0  1711.5 shdw
2011/05/30 14:12:39  21.1 239.3  1709.1 shdw
2011/05/30 14:12:40  21.2 239.5  1706.7 shdw
2011/05/30 14:12:41  21.2 239.8  1704.2 shdw
2011/05/30 14:12:42  21.3 240.0  1701.9 shdw
2011/05/30 14:12:43  21.3 240.3  1699.5 shdw
2011/05/30 14:12:44  21.4 240.5  1697.2 shdw
2011/05/30 14:12:45  21.5 240.8  1694.9 shdw
2011/05/30 14:12:46  21.5 241.1  1692.6 shdw
2011/05/30 14:12:47  21.6 241.3  1690.3 shdw
2011/05/30 14:12:48  21.6 241.6  1688.1 shdw
2011/05/30 14:12:49  21.7 241.8  1685.9 shdw
2011/05/30 14:12:50  21.7 242.1  1683.7 shdw
2011/05/30 14:12:51  21.8 242.3  1681.6 shdw
2011/05/30 14:12:52  21.8 242.6  1679.5 shdw
2011/05/30 14:12:53  21.9 242.9  1677.4 shdw
2011/05/30 14:12:54  21.9 243.1  1675.3 shdw
2011/05/30 14:12:55  21.9 243.4  1673.2 shdw
2011/05/30 14:12:56  22.0 243.7  1671.2 shdw
2011/05/30 14:12:57  22.0 243.9  1669.2 shdw
2011/05/30 14:12:58  22.1 244.2  1667.3 shdw
2011/05/30 14:12:59  22.1 244.5  1665.3 shdw
2011/05/30 14:13:00  22.2 244.7  1663.4 shdw
2011/05/30 14:13:01  22.2 245.0  1661.6 shdw
2011/05/30 14:13:02  22.3 245.3  1659.7 shdw
2011/05/30 14:13:03  22.3 245.5  1657.9 shdw
2011/05/30 14:13:04  22.3 245.8  1656.1 shdw
2011/05/30 14:13:05  22.4 246.1  1654.3 shdw
2011/05/30 14:13:06  22.4 246.3  1652.6 shdw
2011/05/30 14:13:07  22.5 246.6  1650.8 shdw
2011/05/30 14:13:08  22.5 246.9  1649.2 shdw
2011/05/30 14:13:09  22.5 247.2  1647.5 shdw
2011/05/30 14:13:10  22.6 247.4  1645.9 shdw
2011/05/30 14:13:11  22.6 247.7  1644.3 shdw
2011/05/30 14:13:12  22.7 248.0  1642.7 shdw
2011/05/30 14:13:13  22.7 248.3  1641.1 shdw
2011/05/30 14:13:14  22.7 248.5  1639.6 shdw
2011/05/30 14:13:15  22.8 248.8  1638.1 shdw
2011/05/30 14:13:16  22.8 249.1  1636.7 shdw
2011/05/30 14:13:17  22.8 249.4  1635.2 shdw
2011/05/30 14:13:18  22.9 249.7  1633.8 shdw
2011/05/30 14:13:19  22.9 249.9  1632.5 shdw
2011/05/30 14:13:20  22.9 250.2  1631.1 shdw
2011/05/30 14:13:21  23.0 250.5  1629.8 shdw
2011/05/30 14:13:22  23.0 250.8  1628.5 shdw
2011/05/30 14:13:23  23.0 251.1  1627.2 shdw
2011/05/30 14:13:24  23.1 251.3  1626.0 shdw
2011/05/30 14:13:25  23.1 251.6  1624.8 shdw
2011/05/30 14:13:26  23.1 251.9  1623.6 shdw
2011/05/30 14:13:27  23.1 252.2  1622.5 shdw
2011/05/30 14:13:28  23.2 252.5  1621.4 shdw
2011/05/30 14:13:29  23.2 252.8  1620.3 shdw
2011/05/30 14:13:30  23.2 253.1  1619.2 shdw
2011/05/30 14:13:31  23.3 253.3  1618.2 shdw
2011/05/30 14:13:32  23.3 253.6  1617.2 shdw
2011/05/30 14:13:33  23.3 253.9  1616.3 shdw
2011/05/30 14:13:34  23.3 254.2  1615.3 shdw
2011/05/30 14:13:35  23.3 254.5  1614.4 shdw
2011/05/30 14:13:36  23.4 254.8  1613.5 shdw
2011/05/30 14:13:37  23.4 255.1  1612.7 shdw
2011/05/30 14:13:38  23.4 255.4  1611.9 shdw
2011/05/30 14:13:39  23.4 255.7  1611.1 shdw
2011/05/30 14:13:40  23.4 255.9  1610.3 shdw
2011/05/30 14:13:41  23.5 256.2  1609.6 shdw
2011/05/30 14:13:42  23.5 256.5  1608.9 shdw
2011/05/30 14:13:43  23.5 256.8  1608.2 shdw
2011/05/30 14:13:44  23.5 257.1  1607.6 shdw
2011/05/30 14:13:45  23.5 257.4  1607.0 shdw
2011/05/30 14:13:46  23.5 257.7  1606.4 shdw
2011/05/30 14:13:47  23.6 258.0  1605.9 shdw
2011/05/30 14:13:48  23.6 258.3  1605.4 shdw
2011/05/30 14:13:49  23.6 258.6  1604.9 shdw
2011/05/30 14:13:50  23.6 258.9  1604.4 shdw
2011/05/30 14:13:51  23.6 259.2  1604.0 shdw
2011/05/30 14:13:52  23.6 259.5  1603.6 shdw
2011/05/30 14:13:53  23.6 259.8  1603.2 shdw
2011/05/30 14:13:54  23.6 260.0  1602.9 shdw
2011/05/30 14:13:55  23.6 260.3  1602.6 shdw
2011/05/30 14:13:56  23.6 260.6  1602.3 shdw
2011/05/30 14:13:57  23.6 260.9  1602.1 shdw



( run in 2.750 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )