summaryrefslogtreecommitdiff
path: root/Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Particles/EmitterTests.cs
blob: 4ec9b654df068db32c7c82f82f9e593bd0aa8a59 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
//using System;
//using Microsoft.Xna.Framework;
//using MonoGame.Extended.Particles;
//using MonoGame.Extended.Particles.Modifiers;
//using MonoGame.Extended.Particles.Profiles;
//using Xunit;

//namespace MonoGame.Extended.Tests.Particles
//{
//    
//    public class EmitterTests
//    {
//        public class UpdateMethod
//        {
//            [Fact]
//            public void WhenThereAreParticlesToExpire_DecreasesActiveParticleCount()
//            {
//                var subject = new ParticleEmitter(null, 100, TimeSpan.FromSeconds(1), Profile.Point())
//                {
//                    AutoTrigger = false,
//                    Parameters = new ParticleReleaseParameters
//                    {
//                        Quantity = 1
//                    }
//                };

//                subject.Trigger(new Vector2(0f, 0f));
//                Assert.Equal(subject.ActiveParticles, 1);

//                subject.Update(2f);
//                Assert.Equal(subject.ActiveParticles, 0);
//            }

//            [Fact]
//            public void WhenThereAreParticlesToExpire_DoesNotPassExpiredParticlesToModifiers()
//            {
//                var subject = new ParticleEmitter(null, 100, TimeSpan.FromSeconds(1), Profile.Point())
//                {
//                    Parameters = new ParticleReleaseParameters()
//                    {
//                        Quantity = 1
//                    },
//                    Modifiers =
//                    {
//                        new AssertionModifier(particle => particle.Age <= 1f)
//                    }
//                };

//                subject.Trigger(new Vector2(0f, 0f));
//                subject.Update(0.5f);
//                subject.Trigger(new Vector2(0f, 0f));
//                subject.Update(0.5f);
//                subject.Trigger(new Vector2(0f, 0f));
//                subject.Update(0.5f);
//            }

//            [Fact]
//            public void WhenThereAreNoActiveParticles_GracefullyDoesNothing()
//            {
//                var subject = new ParticleEmitter(null, 100, TimeSpan.FromSeconds(1), Profile.Point()) { AutoTrigger = false };

//                subject.Update(0.5f);
//                Assert.Equal(subject.ActiveParticles, 0);
//            }
//        }

//        public class TriggerMethod
//        {
//            [Fact]
//            public void WhenEnoughHeadroom_IncreasesActiveParticlesCountByReleaseQuantity()
//            {
//                var subject = new ParticleEmitter(null, 100, TimeSpan.FromSeconds(1), Profile.Point())
//                {
//                    Parameters = new ParticleReleaseParameters
//                    {
//                        Quantity = 10
//                    }
//                };
//                Assert.Equal(subject.ActiveParticles, 0);
//                subject.Trigger(new Vector2(0f, 0f));
//                Assert.Equal(subject.ActiveParticles, 10);
//            }

//            [Fact]
//            public void WhenNotEnoughHeadroom_IncreasesActiveParticlesCountByRemainingParticles()
//            {
//                var subject = new ParticleEmitter(null, 15, TimeSpan.FromSeconds(1), Profile.Point())
//                {
//                    Parameters = new ParticleReleaseParameters
//                    {
//                        Quantity = 10
//                    }
//                };

//                subject.Trigger(new Vector2(0f, 0f));
//                Assert.Equal(subject.ActiveParticles, 10);
//                subject.Trigger(new Vector2(0f, 0f));
//                Assert.Equal(subject.ActiveParticles, 15);
//            }

//            [Fact]
//            public void WhenNoRemainingParticles_DoesNotIncreaseActiveParticlesCount()
//            {
//                var subject = new ParticleEmitter(null, 10, TimeSpan.FromSeconds(1), Profile.Point())
//                {
//                    Parameters = new ParticleReleaseParameters
//                    {
//                        Quantity = 10
//                    }
//                };

//                subject.Trigger(new Vector2(0f, 0f));
//                Assert.Equal(subject.ActiveParticles, 10);
//                subject.Trigger(new Vector2(0f, 0f));
//                Assert.Equal(subject.ActiveParticles, 10);
//            }
//        }

//        public class DisposeMethod
//        {
//            [Fact]
//            public void IsIdempotent()
//            {
//                var subject = new ParticleEmitter(null, 10, TimeSpan.FromSeconds(1), Profile.Point());

//                subject.Dispose();
//                subject.Dispose();
//            }
//        }
//    }
//}