@@ -686,6 +686,61 @@ void TestSetMixers(CuTest *t)
686686 }
687687}
688688
689+ #define TO_SOURCE (x ) ((x) < 0 ? (NUM_SOURCES + 1 - (x)) : (x))
690+ #define FROM_SOURCE (x ) ((x) > NUM_SOURCES ? -((x)-NUM_SOURCES-1) : (x))
691+ void TestSetMixerDepends (CuTest * t )
692+ {
693+ int sources [] = {-6 , 1 , -2 , 1 , -1 , 1 };
694+ int switches [] = { 0 , 0 , 0 , -5 , 0 , 0 };
695+ int dests [] = { 4 , 1 , 6 , 6 , 2 , 5 };
696+ memset (& Model , 0 , sizeof (Model ));
697+ for (unsigned i = 0 ; i < sizeof (Model .templates )/sizeof (Model .templates [0 ]); i ++ ) {
698+ Model .templates [i ] = MIXERTEMPLATE_SIMPLE ;
699+ }
700+ for (unsigned i = 0 ; i < sizeof (sources )/sizeof (sources [0 ]); i ++ ) {
701+ Model .mixers [i ].src = TO_SOURCE (sources [i ]);
702+ Model .mixers [i ].sw = TO_SOURCE (switches [i ]);
703+ Model .mixers [i ].dest = dests [i ];
704+ Model .mixers [i ].scalar = i ;
705+ Model .mixers [i ].curve .type = CURVE_FIXED ;
706+ }
707+ MIXER_SetMixers (NULL , 0 );
708+ int expected [] = {1 , 4 , 5 , 2 , 3 , 0 };
709+ for (unsigned i = 0 ; i < sizeof (sources )/sizeof (sources [0 ]); i ++ ) {
710+ //printf("%d: orig:%d src:%d sw:%d dest:%d\n",
711+ // i, Model.mixers[i].scalar, FROM_SOURCE(Model.mixers[i].src),
712+ // FROM_SOURCE(Model.mixers[i].sw), Model.mixers[i].dest);
713+ CuAssertIntEquals (t , expected [i ], Model .mixers [i ].scalar );
714+ }
715+ }
716+
717+ void TestSetMixerLoop (CuTest * t )
718+ {
719+ //negaitve values mean to use a dest as source
720+ int sources [] = {-6 , 1 , -2 , 1 , -1 , 1 };
721+ int switches [] = { 0 , 0 , 0 , -5 , 0 , 0 };
722+ int dests [] = { 1 , 4 , 6 , 6 , 2 , 5 };
723+ memset (& Model , 0 , sizeof (Model ));
724+ for (unsigned i = 0 ; i < sizeof (Model .templates )/sizeof (Model .templates [0 ]); i ++ ) {
725+ Model .templates [i ] = MIXERTEMPLATE_SIMPLE ;
726+ }
727+ for (unsigned i = 0 ; i < sizeof (sources )/sizeof (sources [0 ]); i ++ ) {
728+ Model .mixers [i ].src = TO_SOURCE (sources [i ]);
729+ Model .mixers [i ].sw = TO_SOURCE (switches [i ]);
730+ Model .mixers [i ].dest = dests [i ];
731+ Model .mixers [i ].scalar = i ;
732+ Model .mixers [i ].curve .type = CURVE_FIXED ;
733+ }
734+ MIXER_SetMixers (NULL , 0 );
735+ int expected [] = {1 , 5 , 0 , 4 , 2 , 3 };
736+ for (unsigned i = 0 ; i < sizeof (sources )/sizeof (sources [0 ]); i ++ ) {
737+ //printf("%d: orig:%d src:%d sw:%d dest:%d\n",
738+ // i, Model.mixers[i].scalar, FROM_SOURCE(Model.mixers[i].src),
739+ // FROM_SOURCE(Model.mixers[i].sw), Model.mixers[i].dest);
740+ CuAssertIntEquals (t , expected [i ], Model .mixers [i ].scalar );
741+ }
742+ }
743+
689744void TestGetLimit (CuTest * t )
690745{
691746 struct Limit limit = {0 };
0 commit comments