• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* See COPYING.txt for the full license governing this code. */
2 /**
3  * \file variators.c
4  *
5  * Source file for the operations that act on variators.
6  */
7 
8 #include <SDL_test.h>
9 #include "SDL_visualtest_variators.h"
10 
11 int
SDLVisualTest_InitVariator(SDLVisualTest_Variator * variator,SDLVisualTest_SUTConfig * config,SDLVisualTest_VariatorType type,Uint64 seed)12 SDLVisualTest_InitVariator(SDLVisualTest_Variator* variator,
13                            SDLVisualTest_SUTConfig* config,
14                            SDLVisualTest_VariatorType type,
15                            Uint64 seed)
16 {
17     if(!variator)
18     {
19         SDLTest_LogError("variator argument cannot be NULL");
20         return 0;
21     }
22     if(!config)
23     {
24         SDLTest_LogError("config argument cannot be NULL");
25         return 0;
26     }
27 
28     variator->type = type;
29     switch(type)
30     {
31         case SDL_VARIATOR_EXHAUSTIVE:
32             return SDLVisualTest_InitExhaustiveVariator(&variator->data.exhaustive,
33                                                         config);
34         break;
35 
36         case SDL_VARIATOR_RANDOM:
37             return SDLVisualTest_InitRandomVariator(&variator->data.random,
38                                                     config, seed);
39         break;
40 
41         default:
42             SDLTest_LogError("Invalid value for variator type");
43             return 0;
44     }
45     return 0;
46 }
47 
48 char*
SDLVisualTest_GetNextVariation(SDLVisualTest_Variator * variator)49 SDLVisualTest_GetNextVariation(SDLVisualTest_Variator* variator)
50 {
51     if(!variator)
52     {
53         SDLTest_LogError("variator argument cannot be NULL");
54         return NULL;
55     }
56     switch(variator->type)
57     {
58         case SDL_VARIATOR_EXHAUSTIVE:
59             return SDLVisualTest_GetNextExhaustiveVariation(&variator->data.exhaustive);
60         break;
61 
62         case SDL_VARIATOR_RANDOM:
63             return SDLVisualTest_GetNextRandomVariation(&variator->data.random);
64         break;
65 
66         default:
67             SDLTest_LogError("Invalid value for variator type");
68             return NULL;
69     }
70     return NULL;
71 }
72 
SDLVisualTest_FreeVariator(SDLVisualTest_Variator * variator)73 void SDLVisualTest_FreeVariator(SDLVisualTest_Variator* variator)
74 {
75     if(!variator)
76     {
77         SDLTest_LogError("variator argument cannot be NULL");
78         return;
79     }
80     switch(variator->type)
81     {
82         case SDL_VARIATOR_EXHAUSTIVE:
83             SDLVisualTest_FreeExhaustiveVariator(&variator->data.exhaustive);
84         break;
85 
86         case SDL_VARIATOR_RANDOM:
87             SDLVisualTest_FreeRandomVariator(&variator->data.random);
88         break;
89 
90         default:
91             SDLTest_LogError("Invalid value for variator type");
92     }
93 }