@@ -811,6 +811,107 @@ fn output_handle_tags() {
811811 }
812812}
813813
814+ #[ test_log:: test]
815+ fn output_handle_active_tags ( ) {
816+ for_each_api ( |lang| {
817+ let ( mut fixture, output, _) = set_up ( ) ;
818+
819+ fixture. pinnacle ( ) . focus_output ( & output) ;
820+
821+ output. with_state_mut ( |state| {
822+ let tag2 = Tag :: new ( "2" . to_string ( ) ) ;
823+ tag2. set_active ( false ) ;
824+
825+ let tag3 = Tag :: new ( "3" . to_string ( ) ) ;
826+ tag3. set_active ( true ) ;
827+
828+ state. add_tags ( [ tag2, tag3] ) ;
829+ } ) ;
830+
831+ match lang {
832+ Lang :: Rust => fixture. spawn_blocking ( move || {
833+ let mut tags = pinnacle_api:: output:: get_focused ( )
834+ . unwrap ( )
835+ . active_tags ( )
836+ . map ( |t| t. name ( ) )
837+ . collect :: < Vec < _ > > ( ) ;
838+
839+ tags. sort ( ) ;
840+
841+ assert_eq ! ( tags. len( ) , 2 ) ;
842+ assert_eq ! ( tags. as_slice( ) , [ "1" , "3" ] ) ;
843+ } ) ,
844+ Lang :: Lua => spawn_lua_blocking ! {
845+ fixture,
846+ local tags = Output . get_focused( ) : active_tags( )
847+ assert( #tags == 2 )
848+
849+ local tagnames = { }
850+ for k, v in ipairs( tags) do
851+ tagnames[ k] = v: name( )
852+ end
853+
854+ table. sort( tagnames)
855+
856+ assert( tagnames[ 1 ] == "1" )
857+ assert( tagnames[ 2 ] == "3" )
858+ } ,
859+ } ;
860+ } )
861+ }
862+
863+ #[ test_log:: test]
864+ fn output_handle_inactive_tags ( ) {
865+ for_each_api ( |lang| {
866+ let ( mut fixture, output, _) = set_up ( ) ;
867+
868+ fixture. pinnacle ( ) . focus_output ( & output) ;
869+
870+ output. with_state_mut ( |state| {
871+ let tag2 = Tag :: new ( "2" . to_string ( ) ) ;
872+ tag2. set_active ( false ) ;
873+
874+ let tag3 = Tag :: new ( "3" . to_string ( ) ) ;
875+ tag3. set_active ( false ) ;
876+
877+ let tag4 = Tag :: new ( "4" . to_string ( ) ) ;
878+ tag4. set_active ( true ) ;
879+
880+ state. add_tags ( [ tag2, tag3, tag4] ) ;
881+ } ) ;
882+
883+ match lang {
884+ Lang :: Rust => fixture. spawn_blocking ( move || {
885+ let mut tags = pinnacle_api:: output:: get_focused ( )
886+ . unwrap ( )
887+ . inactive_tags ( )
888+ . map ( |t| t. name ( ) )
889+ . collect :: < Vec < _ > > ( ) ;
890+
891+ tags. sort ( ) ;
892+
893+ assert_eq ! ( tags. len( ) , 2 ) ;
894+ assert_eq ! ( tags. as_slice( ) , [ "2" , "3" ] ) ;
895+ } ) ,
896+ Lang :: Lua => spawn_lua_blocking ! {
897+ fixture,
898+ local tags = Output . get_focused( ) : inactive_tags( )
899+ assert( #tags == 2 )
900+
901+ local tagnames = { }
902+ for k, v in ipairs( tags) do
903+ tagnames[ k] = v: name( )
904+ end
905+
906+ table. sort( tagnames)
907+
908+ assert( tagnames[ 1 ] == "2" )
909+ assert( tagnames[ 2 ] == "3" )
910+ } ,
911+ } ;
912+ } )
913+ }
914+
814915#[ test_log:: test]
815916fn output_handle_scale ( ) {
816917 let ( mut fixture, output, _) = set_up ( ) ;
0 commit comments