Example #1
0
TEST(ProcessorRouterTest, DiamondRouting) {
  ProcessorRouter pr;
  TestProcessor tp0(1,2);
  TestProcessor tp1(1,1);
  TestProcessor tp2(1,1);
  TestProcessor tp3(2,1);
  pr.addProcessor(&tp2);
  pr.addProcessor(&tp1);
  pr.addProcessor(&tp3);
  pr.addProcessor(&tp0);

  tp3.plug(&tp1);
  tp3.plug(&tp2, 1);
  tp1.plug(&tp0);
  tp2.plug(tp0.output(1));

  pr.process();

  EXPECT_TRUE(tp0.did_process());
  EXPECT_TRUE(tp0.dependencies_handled());
  EXPECT_TRUE(tp1.did_process());
  EXPECT_TRUE(tp1.dependencies_handled());
  EXPECT_TRUE(tp2.did_process());
  EXPECT_TRUE(tp2.dependencies_handled());
  EXPECT_TRUE(tp2.did_process());
  EXPECT_TRUE(tp2.dependencies_handled());
}
Example #2
0
TEST(ProcessorRouterTest, SingleRouting) {
  ProcessorRouter pr;
  TestProcessor tp;
  pr.addProcessor(&tp);

  pr.process();

  EXPECT_TRUE(tp.did_process());
  EXPECT_TRUE(tp.dependencies_handled());
}
Example #3
0
TEST(ProcessorRouterTest, LinearRouting) {
  ProcessorRouter pr;
  TestProcessor tp0(1,1);
  TestProcessor tp1(1,1);
  TestProcessor tp2(1,1);
  pr.addProcessor(&tp2);
  pr.addProcessor(&tp1);
  pr.addProcessor(&tp0);

  tp2.plug(&tp1);
  tp1.plug(&tp0);

  pr.process();

  EXPECT_TRUE(tp0.did_process());
  EXPECT_TRUE(tp0.dependencies_handled());
  EXPECT_TRUE(tp1.did_process());
  EXPECT_TRUE(tp1.dependencies_handled());
  EXPECT_TRUE(tp2.did_process());
  EXPECT_TRUE(tp2.dependencies_handled());
}
Example #4
0
  Processor* HelmModule::createTempoSyncSwitch(std::string name, Processor* frequency,
                                               Processor* bps, bool poly) {
    static const Value dotted_ratio(2.0 / 3.0);
    static const Value triplet_ratio(3.0 / 2.0);

    ProcessorRouter* owner = poly ? getPolyRouter() : getMonoRouter();
    Processor* tempo = nullptr;
    if (poly)
      tempo = createPolyModControl(name + "_tempo", 6, false);
    else
      tempo = createMonoModControl(name + "_tempo", 6, false);

    Switch* choose_tempo = new Switch();

    choose_tempo->plug(tempo, Switch::kSource);
    choose_tempo->setControlRate(frequency->isControlRate());

    for (int i = 0; i < sizeof(synced_freq_ratios) / sizeof(Value); ++i)
      choose_tempo->plugNext(&synced_freq_ratios[i]);

    Switch* choose_modifier = new Switch();
    Value* sync = new Value(1);
    choose_modifier->plug(sync, Switch::kSource);
    choose_modifier->plugNext(&utils::value_one);
    choose_modifier->plugNext(&utils::value_one);
    choose_modifier->plugNext(&dotted_ratio);
    choose_modifier->plugNext(&triplet_ratio);

    Multiply* modified_tempo = new Multiply();
    modified_tempo->setControlRate(frequency->isControlRate());
    modified_tempo->plug(choose_tempo, 0);
    modified_tempo->plug(choose_modifier, 1);

    Multiply* tempo_frequency = new Multiply();
    tempo_frequency->setControlRate(frequency->isControlRate());
    tempo_frequency->plug(modified_tempo, 0);
    tempo_frequency->plug(bps, 1);

    owner->addProcessor(choose_modifier);
    owner->addProcessor(choose_tempo);
    owner->addProcessor(modified_tempo);
    owner->addProcessor(tempo_frequency);

    Switch* choose_frequency = new Switch();
    choose_frequency->setControlRate(frequency->isControlRate());
    choose_frequency->plug(sync, Switch::kSource);
    choose_frequency->plugNext(frequency);
    choose_frequency->plugNext(tempo_frequency);
    choose_frequency->plugNext(tempo_frequency);
    choose_frequency->plugNext(tempo_frequency);

    owner->addProcessor(choose_frequency);
    controls_[name + "_sync"] = sync;
    return choose_frequency;
  }