refactor: check for null and undefined
[poolifier.git] / tests / pools / selection-strategies / worker-choice-strategy-context.test.js
index 3f65fe8226d62c570f67f548205673960d729af4..2c0250efba1ad99544e0818b4bf018ed880c623a 100644 (file)
@@ -60,10 +60,18 @@ describe('Worker choice strategy context test suite', () => {
         choose: sinon.stub().returns(0)
       }
     )
-    workerChoiceStrategyContext.workerChoiceStrategy = WorkerChoiceStrategyStub
+    expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe(
+      WorkerChoiceStrategies.ROUND_ROBIN
+    )
+    workerChoiceStrategyContext.workerChoiceStrategies.set(
+      workerChoiceStrategyContext.workerChoiceStrategyType,
+      WorkerChoiceStrategyStub
+    )
     const chosenWorkerKey = workerChoiceStrategyContext.execute()
     expect(
-      workerChoiceStrategyContext.workerChoiceStrategy.choose.calledOnce
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        workerChoiceStrategyContext.workerChoiceStrategyType
+      ).choose.calledOnce
     ).toBe(true)
     expect(chosenWorkerKey).toBe(0)
   })
@@ -78,10 +86,18 @@ describe('Worker choice strategy context test suite', () => {
         choose: sinon.stub().returns(0)
       }
     )
-    workerChoiceStrategyContext.workerChoiceStrategy = WorkerChoiceStrategyStub
+    expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe(
+      WorkerChoiceStrategies.ROUND_ROBIN
+    )
+    workerChoiceStrategyContext.workerChoiceStrategies.set(
+      workerChoiceStrategyContext.workerChoiceStrategyType,
+      WorkerChoiceStrategyStub
+    )
     const chosenWorkerKey = workerChoiceStrategyContext.execute()
     expect(
-      workerChoiceStrategyContext.workerChoiceStrategy.choose.calledOnce
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        workerChoiceStrategyContext.workerChoiceStrategyType
+      ).choose.calledOnce
     ).toBe(true)
     expect(chosenWorkerKey).toBe(0)
   })
@@ -90,11 +106,29 @@ describe('Worker choice strategy context test suite', () => {
     const workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
       fixedPool
     )
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.ROUND_ROBIN
+      ).isDynamicPool
+    ).toBe(false)
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.ROUND_ROBIN
+      )
+    ).toBeInstanceOf(RoundRobinWorkerChoiceStrategy)
+    expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe(
+      WorkerChoiceStrategies.ROUND_ROBIN
+    )
     workerChoiceStrategyContext.setWorkerChoiceStrategy(
       WorkerChoiceStrategies.ROUND_ROBIN
     )
-    expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf(
-      RoundRobinWorkerChoiceStrategy
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.ROUND_ROBIN
+      )
+    ).toBeInstanceOf(RoundRobinWorkerChoiceStrategy)
+    expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe(
+      WorkerChoiceStrategies.ROUND_ROBIN
     )
   })
 
@@ -102,11 +136,29 @@ describe('Worker choice strategy context test suite', () => {
     const workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
       dynamicPool
     )
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.ROUND_ROBIN
+      ).isDynamicPool
+    ).toBe(true)
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.ROUND_ROBIN
+      )
+    ).toBeInstanceOf(RoundRobinWorkerChoiceStrategy)
+    expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe(
+      WorkerChoiceStrategies.ROUND_ROBIN
+    )
     workerChoiceStrategyContext.setWorkerChoiceStrategy(
       WorkerChoiceStrategies.ROUND_ROBIN
     )
-    expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf(
-      RoundRobinWorkerChoiceStrategy
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.ROUND_ROBIN
+      )
+    ).toBeInstanceOf(RoundRobinWorkerChoiceStrategy)
+    expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe(
+      WorkerChoiceStrategies.ROUND_ROBIN
     )
   })
 
@@ -114,11 +166,21 @@ describe('Worker choice strategy context test suite', () => {
     const workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
       fixedPool
     )
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.LESS_USED
+      ).isDynamicPool
+    ).toBe(false)
     workerChoiceStrategyContext.setWorkerChoiceStrategy(
       WorkerChoiceStrategies.LESS_USED
     )
-    expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf(
-      LessUsedWorkerChoiceStrategy
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.LESS_USED
+      )
+    ).toBeInstanceOf(LessUsedWorkerChoiceStrategy)
+    expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe(
+      WorkerChoiceStrategies.LESS_USED
     )
   })
 
@@ -126,11 +188,21 @@ describe('Worker choice strategy context test suite', () => {
     const workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
       dynamicPool
     )
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.LESS_USED
+      ).isDynamicPool
+    ).toBe(true)
     workerChoiceStrategyContext.setWorkerChoiceStrategy(
       WorkerChoiceStrategies.LESS_USED
     )
-    expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf(
-      LessUsedWorkerChoiceStrategy
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.LESS_USED
+      )
+    ).toBeInstanceOf(LessUsedWorkerChoiceStrategy)
+    expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe(
+      WorkerChoiceStrategies.LESS_USED
     )
   })
 
@@ -138,11 +210,21 @@ describe('Worker choice strategy context test suite', () => {
     const workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
       fixedPool
     )
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.LESS_BUSY
+      ).isDynamicPool
+    ).toBe(false)
     workerChoiceStrategyContext.setWorkerChoiceStrategy(
       WorkerChoiceStrategies.LESS_BUSY
     )
-    expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf(
-      LessBusyWorkerChoiceStrategy
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.LESS_BUSY
+      )
+    ).toBeInstanceOf(LessBusyWorkerChoiceStrategy)
+    expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe(
+      WorkerChoiceStrategies.LESS_BUSY
     )
   })
 
@@ -150,11 +232,21 @@ describe('Worker choice strategy context test suite', () => {
     const workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
       dynamicPool
     )
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.LESS_BUSY
+      ).isDynamicPool
+    ).toBe(true)
     workerChoiceStrategyContext.setWorkerChoiceStrategy(
       WorkerChoiceStrategies.LESS_BUSY
     )
-    expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf(
-      LessBusyWorkerChoiceStrategy
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.LESS_BUSY
+      )
+    ).toBeInstanceOf(LessBusyWorkerChoiceStrategy)
+    expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe(
+      WorkerChoiceStrategies.LESS_BUSY
     )
   })
 
@@ -162,11 +254,21 @@ describe('Worker choice strategy context test suite', () => {
     const workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
       fixedPool
     )
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.FAIR_SHARE
+      ).isDynamicPool
+    ).toBe(false)
     workerChoiceStrategyContext.setWorkerChoiceStrategy(
       WorkerChoiceStrategies.FAIR_SHARE
     )
-    expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf(
-      FairShareWorkerChoiceStrategy
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.FAIR_SHARE
+      )
+    ).toBeInstanceOf(FairShareWorkerChoiceStrategy)
+    expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe(
+      WorkerChoiceStrategies.FAIR_SHARE
     )
   })
 
@@ -174,11 +276,21 @@ describe('Worker choice strategy context test suite', () => {
     const workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
       dynamicPool
     )
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.FAIR_SHARE
+      ).isDynamicPool
+    ).toBe(true)
     workerChoiceStrategyContext.setWorkerChoiceStrategy(
       WorkerChoiceStrategies.FAIR_SHARE
     )
-    expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf(
-      FairShareWorkerChoiceStrategy
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.FAIR_SHARE
+      )
+    ).toBeInstanceOf(FairShareWorkerChoiceStrategy)
+    expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe(
+      WorkerChoiceStrategies.FAIR_SHARE
     )
   })
 
@@ -186,11 +298,21 @@ describe('Worker choice strategy context test suite', () => {
     const workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
       fixedPool
     )
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+      ).isDynamicPool
+    ).toBe(false)
     workerChoiceStrategyContext.setWorkerChoiceStrategy(
       WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
     )
-    expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf(
-      WeightedRoundRobinWorkerChoiceStrategy
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+      )
+    ).toBeInstanceOf(WeightedRoundRobinWorkerChoiceStrategy)
+    expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe(
+      WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
     )
   })
 
@@ -198,11 +320,21 @@ describe('Worker choice strategy context test suite', () => {
     const workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
       dynamicPool
     )
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+      ).isDynamicPool
+    ).toBe(true)
     workerChoiceStrategyContext.setWorkerChoiceStrategy(
       WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
     )
-    expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf(
-      WeightedRoundRobinWorkerChoiceStrategy
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
+      )
+    ).toBeInstanceOf(WeightedRoundRobinWorkerChoiceStrategy)
+    expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe(
+      WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
     )
   })
 })