@testset "test_components.jl" begin
    @testset "probing GenericPulse" begin
        gp = GenericPulse([0., 1., 3., 4.], [1., 2., 3., 0.], [0., 90., 180., 180.])
        @test variables.amplitude(gp, 0.) ≈ 1.
        @test variables.amplitude(gp, 1.) ≈ 2.
        @test variables.amplitude(gp, 0.25) ≈ 1.25
        @test variables.amplitude(gp, 2.5) ≈ 2.75
        @test variables.amplitude(gp, 3.5) ≈ 1.5
        @test variables.amplitude(gp, 4.) ≈ 0.

        @test variables.phase(gp, 0.) ≈ 0.
        @test variables.phase(gp, 1.) ≈ 90.
        @test variables.phase(gp, 0.25) ≈ 90/4
        @test variables.phase(gp, 2.5) ≈ 90 * 7/4
        @test variables.phase(gp, 3.5) ≈ 180.
        @test variables.phase(gp, 4.) ≈ 180.

        @test variables.frequency(gp, 0.) ≈ 1/4
        @test variables.frequency(gp, 1.) ≈ 1/6
        @test variables.frequency(gp, 0.25) ≈ 1/4
        @test variables.frequency(gp, 2.5) ≈ 1/8
        @test variables.frequency(gp, 3.) ≈ 1/12
        @test variables.frequency(gp, 3.5) ≈ 0.
        @test variables.frequency(gp, 4.) ≈ 0.
    end
    @testset "SincPulse" begin
        sp = SincPulse(amplitude=1., frequency=2., phase=0., lobe_duration=10., Nzeros=(2, 1))
        
        @test variables.duration(sp) ≈ 30.

        @test variables.amplitude(sp, 20) ≈ 1.
        @test variables.amplitude(sp, 0) ≈ 0. atol=1e-8
        @test variables.amplitude(sp, 10) ≈ 0. atol=1e-8

        @test variables.phase(sp, 20) ≈ 0. atol=1e-8
        @test variables.phase(sp, 0) ≈ -360 * 40
        @test variables.phase(sp, 10) ≈ -360 * 20
        @test variables.phase(sp, 30) ≈ 360 * 20

        @test variables.frequency(sp, π) ≈ 2.
    end

end