@@ -80,7 +80,7 @@ pub const fn encode_uvfits_baseline(ant1: usize, ant2: usize) -> usize {
8080/// start at 1.
8181#[ allow( dead_code) ]
8282pub const fn decode_uvfits_baseline ( bl : usize ) -> ( usize , usize ) {
83- if bl < 65_535 {
83+ if bl <= 65_535 {
8484 let ant2 = bl % 256 ;
8585 let ant1 = ( bl - ant2) / 256 ;
8686 ( ant1, ant2)
@@ -2830,4 +2830,110 @@ mod tests {
28302830 }
28312831 }
28322832 }
2833+
2834+ #[ test]
2835+ fn test_encode_uvfits_baseline_256t ( ) {
2836+ // test hand calculated edge cases
2837+ assert_eq ! ( encode_uvfits_baseline( 1 , 1 ) , 257 ) ;
2838+ assert_eq ! ( encode_uvfits_baseline( 1 , 2 ) , 258 ) ;
2839+ assert_eq ! ( encode_uvfits_baseline( 1 , 255 ) , 511 ) ;
2840+ assert_eq ! ( encode_uvfits_baseline( 1 , 256 ) , 67840 ) ;
2841+ assert_eq ! ( encode_uvfits_baseline( 127 , 127 ) , 32639 ) ;
2842+ assert_eq ! ( encode_uvfits_baseline( 127 , 255 ) , 32767 ) ;
2843+ assert_eq ! ( encode_uvfits_baseline( 127 , 256 ) , 325888 ) ;
2844+ assert_eq ! ( encode_uvfits_baseline( 128 , 128 ) , 32896 ) ;
2845+ assert_eq ! ( encode_uvfits_baseline( 128 , 255 ) , 33023 ) ;
2846+ assert_eq ! ( encode_uvfits_baseline( 128 , 256 ) , 327936 ) ;
2847+ assert_eq ! ( encode_uvfits_baseline( 254 , 254 ) , 65278 ) ;
2848+ assert_eq ! ( encode_uvfits_baseline( 254 , 255 ) , 65279 ) ;
2849+ assert_eq ! ( encode_uvfits_baseline( 254 , 256 ) , 585984 ) ;
2850+ assert_eq ! ( encode_uvfits_baseline( 255 , 255 ) , 65535 ) ;
2851+ assert_eq ! ( encode_uvfits_baseline( 255 , 256 ) , 588032 ) ;
2852+ assert_eq ! ( encode_uvfits_baseline( 256 , 256 ) , 590080 ) ;
2853+ }
2854+
2855+ #[ test]
2856+ fn test_decode_uvfits_baseline_256t ( ) {
2857+ // Test hand calculated edge cases
2858+ assert_eq ! ( decode_uvfits_baseline( 257 ) , ( 1 , 1 ) ) ;
2859+ assert_eq ! ( decode_uvfits_baseline( 258 ) , ( 1 , 2 ) ) ;
2860+ assert_eq ! ( decode_uvfits_baseline( 511 ) , ( 1 , 255 ) ) ;
2861+ assert_eq ! ( decode_uvfits_baseline( 67840 ) , ( 1 , 256 ) ) ;
2862+ assert_eq ! ( decode_uvfits_baseline( 32639 ) , ( 127 , 127 ) ) ;
2863+ assert_eq ! ( decode_uvfits_baseline( 32767 ) , ( 127 , 255 ) ) ;
2864+ assert_eq ! ( decode_uvfits_baseline( 325888 ) , ( 127 , 256 ) ) ;
2865+ assert_eq ! ( decode_uvfits_baseline( 32896 ) , ( 128 , 128 ) ) ;
2866+ assert_eq ! ( decode_uvfits_baseline( 33023 ) , ( 128 , 255 ) ) ;
2867+ assert_eq ! ( decode_uvfits_baseline( 327936 ) , ( 128 , 256 ) ) ;
2868+ assert_eq ! ( decode_uvfits_baseline( 65278 ) , ( 254 , 254 ) ) ;
2869+ assert_eq ! ( decode_uvfits_baseline( 65279 ) , ( 254 , 255 ) ) ;
2870+ assert_eq ! ( decode_uvfits_baseline( 585984 ) , ( 254 , 256 ) ) ;
2871+ assert_eq ! ( decode_uvfits_baseline( 65535 ) , ( 255 , 255 ) ) ;
2872+ assert_eq ! ( decode_uvfits_baseline( 588032 ) , ( 255 , 256 ) ) ;
2873+ assert_eq ! ( decode_uvfits_baseline( 590080 ) , ( 256 , 256 ) ) ;
2874+ }
28332875}
2876+
2877+ #[ test]
2878+ fn test_encode_decode_uvfits_all_baselines_128t ( ) {
2879+ // Test all baselines can be encoded then decoded correctly
2880+ // MWAX 128T
2881+ let n_ants: usize = 128 ;
2882+
2883+ for ant1 in 1 ..=n_ants {
2884+ for ant2 in ant1..=n_ants {
2885+ let bl = encode_uvfits_baseline ( ant1, ant2) ;
2886+ let ( a1, a2) = decode_uvfits_baseline ( bl) ;
2887+ assert_eq ! ( a1, ant1) ;
2888+ assert_eq ! ( a2, ant2) ;
2889+ }
2890+ }
2891+ }
2892+
2893+ #[ test]
2894+ fn test_encode_decode_uvfits_all_baselines_256t ( ) {
2895+ // Test all baselines can be encoded then decoded correctly
2896+ // MWAX 256T
2897+ let n_ants: usize = 256 ;
2898+
2899+ for ant1 in 1 ..=n_ants {
2900+ for ant2 in ant1..=n_ants {
2901+ let bl = encode_uvfits_baseline ( ant1, ant2) ;
2902+ let ( a1, a2) = decode_uvfits_baseline ( bl) ;
2903+ assert_eq ! ( a1, ant1) ;
2904+ assert_eq ! ( a2, ant2) ;
2905+ }
2906+ }
2907+ }
2908+
2909+ #[ test]
2910+ fn test_encode_decode_uvfits_all_baselines_264t ( ) {
2911+ // Test all baselines can be encoded then decoded correctly
2912+ // MWAX 256T + 1 more receiver
2913+ let n_ants: usize = 264 ;
2914+
2915+ for ant1 in 1 ..=n_ants {
2916+ for ant2 in ant1..=n_ants {
2917+ let bl = encode_uvfits_baseline ( ant1, ant2) ;
2918+ let ( a1, a2) = decode_uvfits_baseline ( bl) ;
2919+ assert_eq ! ( a1, ant1) ;
2920+ assert_eq ! ( a2, ant2) ;
2921+ }
2922+ }
2923+ }
2924+
2925+ #[ test]
2926+ fn test_encode_decode_uvfits_all_baselines_512t ( ) {
2927+ // Test all baselines can be encoded then decoded correctly
2928+ // MWAX 512T (Phase 4(!))
2929+ let n_ants: usize = 512 ;
2930+
2931+ for ant1 in 1 ..=n_ants {
2932+ for ant2 in ant1..=n_ants {
2933+ let bl = encode_uvfits_baseline ( ant1, ant2) ;
2934+ let ( a1, a2) = decode_uvfits_baseline ( bl) ;
2935+ assert_eq ! ( a1, ant1) ;
2936+ assert_eq ! ( a2, ant2) ;
2937+ }
2938+ }
2939+ }
0 commit comments