@testset "GroupConstructions" begin

    @testset "DirectProduct" begin
        GH =
            let G = PermutationGroups.SymmetricGroup(3),
                H = PermutationGroups.SymmetricGroup(4)

                Groups.Constructions.DirectProduct(G, H)
            end
        test_Group_interface(GH)
        test_GroupElement_interface(rand(GH, 2)...)

        @test collect(GH) isa Array{eltype(GH), 2}
        @test contains(sprint(print, GH), "Direct product")
        @test sprint(print, rand(GH)) isa String
    end

    @testset "DirectPower" begin
        GGG = Groups.Constructions.DirectPower{3}(
            PermutationGroups.SymmetricGroup(3),
        )
        test_Group_interface(GGG)
        test_GroupElement_interface(rand(GGG, 2)...)

        @test collect(GGG) isa Array{eltype(GGG), 3}
        @test contains(sprint(print, GGG), "Direct 3-rd power")
        @test sprint(print, rand(GGG)) isa String
    end
    @testset "WreathProduct" begin
        W =
            let G = PermutationGroups.SymmetricGroup(2),
                P = PermutationGroups.SymmetricGroup(4)

                Groups.Constructions.WreathProduct(G, P)
            end
        test_Group_interface(W)
        test_GroupElement_interface(rand(W, 2)...)

        @test collect(W) isa Array{eltype(W), 2}
        @test contains(sprint(print, W), "Wreath product")
        @test sprint(print, rand(W)) isa String
    end
end