Exemple #1
0
TEST(FlagStatus, sticky_clear) {
  FlagStatus flagStatus;

  flagStatus.sticky_increase(ModifierFlag::COMMAND_L | ModifierFlag::FN | ModifierFlag::SHIFT_L);
  EXPECT_EQ(ModifierFlag::COMMAND_L | ModifierFlag::FN | ModifierFlag::SHIFT_L, flagStatus.makeFlags());

  flagStatus.sticky_clear();
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());
}
Exemple #2
0
TEST(FlagStatus, decrease) {
  FlagStatus flagStatus;

  flagStatus.increase(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L);
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L), flagStatus.makeFlags());

  flagStatus.decrease(ModifierFlag::CONTROL_L);
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L), flagStatus.makeFlags());
}
Exemple #3
0
TEST(FlagStatus, ScopedTemporaryFlagsChanger) {
  {
    FlagStatus flagStatus;

    flagStatus.increase(ModifierFlag::SHIFT_L);
    flagStatus.increase(ModifierFlag::SHIFT_L);
    flagStatus.increase(ModifierFlag::SHIFT_L);
    flagStatus.increase(ModifierFlag::SHIFT_L);
    flagStatus.increase(ModifierFlag::SHIFT_R);
    flagStatus.temporary_increase(ModifierFlag::CONTROL_L);
    flagStatus.lock_increase(ModifierFlag::COMMAND_R);
    flagStatus.sticky_increase(ModifierFlag::OPTION_R);

    EXPECT_EQ(Flags(ModifierFlag::SHIFT_L | ModifierFlag::SHIFT_R | ModifierFlag::CONTROL_L | ModifierFlag::COMMAND_R | ModifierFlag::OPTION_R), flagStatus.makeFlags());

    {
      FlagStatus::ScopedTemporaryFlagsChanger stfc(flagStatus,
                                                   ModifierFlag::FN | ModifierFlag::OPTION_L | ModifierFlag::SHIFT_R);

      EXPECT_EQ(Flags(ModifierFlag::FN | ModifierFlag::OPTION_L | ModifierFlag::SHIFT_R), flagStatus.makeFlags());
    }

    EXPECT_EQ(Flags(ModifierFlag::SHIFT_L | ModifierFlag::SHIFT_R | ModifierFlag::CONTROL_L | ModifierFlag::COMMAND_R | ModifierFlag::OPTION_R), flagStatus.makeFlags());

    flagStatus.decrease(ModifierFlag::SHIFT_L);
    flagStatus.decrease(ModifierFlag::SHIFT_L);
    flagStatus.decrease(ModifierFlag::SHIFT_L);

    EXPECT_EQ(Flags(ModifierFlag::SHIFT_L | ModifierFlag::SHIFT_R | ModifierFlag::CONTROL_L | ModifierFlag::COMMAND_R | ModifierFlag::OPTION_R), flagStatus.makeFlags());

    flagStatus.decrease(ModifierFlag::SHIFT_L);

    EXPECT_EQ(Flags(ModifierFlag::SHIFT_R | ModifierFlag::CONTROL_L | ModifierFlag::COMMAND_R | ModifierFlag::OPTION_R), flagStatus.makeFlags());
  }

  // ------------------------------------------------------------
  {
    FlagStatus flagStatus;

    flagStatus.decrease(ModifierFlag::SHIFT_L);
    flagStatus.decrease(ModifierFlag::SHIFT_L);

    {
      Flags flags(ModifierFlag::SHIFT_R);
      FlagStatus::ScopedTemporaryFlagsChanger stfc(flagStatus, flags);
      EXPECT_EQ(Flags(ModifierFlag::SHIFT_R), flagStatus.makeFlags());
    }

    flagStatus.increase(ModifierFlag::SHIFT_L);
    flagStatus.increase(ModifierFlag::SHIFT_L);

    EXPECT_EQ(Flags(0), flagStatus.makeFlags());
  }
}
Exemple #4
0
TEST(FlagStatus, sticky_toggle) {
  FlagStatus flagStatus;

  flagStatus.sticky_increase(ModifierFlag::COMMAND_L);
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L), flagStatus.makeFlags());

  flagStatus.sticky_toggle(ModifierFlag::COMMAND_L);
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());

  flagStatus.sticky_toggle(ModifierFlag::COMMAND_L);
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L), flagStatus.makeFlags());
}
Exemple #5
0
TEST(FlagStatus, sticky_increase) {
  FlagStatus flagStatus;

  // Do nothing with ModifierFlag::NONE.
  flagStatus.sticky_increase(ModifierFlag::NONE);
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());

  flagStatus.sticky_increase(ModifierFlag::COMMAND_L | ModifierFlag::FN);
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::FN), flagStatus.makeFlags());

  flagStatus.sticky_decrease(ModifierFlag::COMMAND_L);
  EXPECT_EQ(Flags(ModifierFlag::FN), flagStatus.makeFlags());
}
Exemple #6
0
TEST(FlagStatus, temporary_decrease) {
  FlagStatus flagStatus;

  flagStatus.increase(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L);
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L), flagStatus.makeFlags());

  flagStatus.temporary_decrease(ModifierFlag::CONTROL_L);
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L), flagStatus.makeFlags());

  // temporary_increase will reset by flagStatus.set
  flagStatus.set(KeyCode::COMMAND_L, Flags(ModifierFlag::COMMAND_L));
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L), flagStatus.makeFlags());
}
Exemple #7
0
TEST(FlagStatus, decrease) {
  FlagStatus flagStatus;

  {
    Vector_ModifierFlag v;
    v.push_back(ModifierFlag::COMMAND_L);
    v.push_back(ModifierFlag::CONTROL_L);
    flagStatus.increase(v);
    EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L), flagStatus.makeFlags());
  }

  flagStatus.decrease(ModifierFlag::CONTROL_L);
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L), flagStatus.makeFlags());
}
Exemple #8
0
TEST(FlagStatus, negative_lock_increase) {
  FlagStatus flagStatus;

  // ----------------------------------------
  flagStatus.negative_lock_increase(ModifierFlag::COMMAND_L);
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());

  flagStatus.increase(ModifierFlag::COMMAND_L);
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());

  flagStatus.increase(ModifierFlag::COMMAND_L);
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L), flagStatus.makeFlags());

  // ----------------------------------------
  // lock don't cancel by reset & set.
  flagStatus.reset();
  flagStatus.set(KeyCode::A, Flags(0));
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());

  flagStatus.increase(ModifierFlag::COMMAND_L);
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());

  flagStatus.increase(ModifierFlag::COMMAND_L);
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L), flagStatus.makeFlags());

  // ----------------------------------------
  flagStatus.reset();
  flagStatus.negative_lock_decrease(ModifierFlag::COMMAND_L);
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());

  flagStatus.increase(ModifierFlag::COMMAND_L);
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L), flagStatus.makeFlags());
}
Exemple #9
0
TEST(FlagStatus, sticky_clear) {
  FlagStatus flagStatus;

  {
    Vector_ModifierFlag v;
    v.push_back(ModifierFlag::COMMAND_L);
    v.push_back(ModifierFlag::FN);
    v.push_back(ModifierFlag::SHIFT_L);
    flagStatus.sticky_increase(v);
    EXPECT_EQ(ModifierFlag::COMMAND_L | ModifierFlag::FN | ModifierFlag::SHIFT_L, flagStatus.makeFlags());
  }

  flagStatus.sticky_clear();
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());
}
Exemple #10
0
TEST(FlagStatus, increase) {
  FlagStatus flagStatus;

  // Do nothing with ModifierFlag::NONE.
  flagStatus.increase(ModifierFlag::NONE);
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());

  flagStatus.increase(ModifierFlag::SHIFT_L);
  EXPECT_EQ(Flags(ModifierFlag::SHIFT_L), flagStatus.makeFlags());

  flagStatus.increase(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L);
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L), flagStatus.makeFlags());

  flagStatus.increase(ModifierFlag::NONE);
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L), flagStatus.makeFlags());
}
Exemple #11
0
TEST(FlagStatus, temporary_increase) {
  FlagStatus flagStatus;

  // Do nothing with ModifierFlag::NONE.
  flagStatus.temporary_increase(ModifierFlag::NONE);
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());

  flagStatus.increase(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L);
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L), flagStatus.makeFlags());

  flagStatus.temporary_increase(ModifierFlag::OPTION_L);
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L | ModifierFlag::OPTION_L), flagStatus.makeFlags());

  // temporary_increase will reset by flagStatus.set
  flagStatus.set(KeyCode::COMMAND_L, Flags(ModifierFlag::COMMAND_L));
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L), flagStatus.makeFlags());
}
Exemple #12
0
TEST(FlagStatus, CapsLock) {
  FlagStatus flagStatus;

  flagStatus.set(KeyCode::CAPSLOCK, Flags(ModifierFlag::CAPSLOCK));
  EXPECT_EQ(Flags(ModifierFlag::CAPSLOCK), flagStatus.makeFlags());

  flagStatus.reset();

  flagStatus.set(KeyCode::A, Flags(ModifierFlag::CAPSLOCK));
  EXPECT_EQ(Flags(ModifierFlag::CAPSLOCK), flagStatus.makeFlags());

  // from other keyboard
  flagStatus.set(KeyCode::A, Flags(0));
  EXPECT_EQ(Flags(ModifierFlag::CAPSLOCK), flagStatus.makeFlags());

  flagStatus.set(KeyCode::A, Flags(ModifierFlag::CAPSLOCK));
  EXPECT_EQ(Flags(ModifierFlag::CAPSLOCK), flagStatus.makeFlags());

  // reset
  flagStatus.set(KeyCode::CAPSLOCK, Flags(0));
  EXPECT_EQ(Flags(), flagStatus.makeFlags());

  // soft caps
  flagStatus.lock_increase(ModifierFlag::CAPSLOCK);
  flagStatus.set(KeyCode::A, Flags(0));
  EXPECT_EQ(Flags(ModifierFlag::CAPSLOCK), flagStatus.makeFlags());

  // soft caps will be canceled by hardware caps
  flagStatus.set(KeyCode::CAPSLOCK, Flags(0));
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());
}
Exemple #13
0
TEST(FlagStatus, lock_increase) {
  FlagStatus flagStatus;

  // Do nothing with ModifierFlag::NONE.
  flagStatus.lock_increase(ModifierFlag::NONE);
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());

  flagStatus.lock_increase(ModifierFlag::COMMAND_L);
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L), flagStatus.makeFlags());

  // lock don't cancel by reset & set.
  flagStatus.reset();
  flagStatus.set(KeyCode::A, Flags(0));
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L), flagStatus.makeFlags());

  flagStatus.lock_decrease(ModifierFlag::COMMAND_L);
  EXPECT_EQ(Flags(), flagStatus.makeFlags());
}
Exemple #14
0
TEST(FlagStatus, increase) {
  {
    FlagStatus flagStatus;

    // Do nothing with ModifierFlag::NONE.
    flagStatus.increase(ModifierFlag::NONE);
    EXPECT_EQ(Flags(0), flagStatus.makeFlags());

    flagStatus.increase(ModifierFlag::SHIFT_L);
    EXPECT_EQ(Flags(ModifierFlag::SHIFT_L), flagStatus.makeFlags());

    {
      Vector_ModifierFlag v;
      v.push_back(ModifierFlag::COMMAND_L);
      v.push_back(ModifierFlag::CONTROL_L);
      flagStatus.increase(v);
      EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L), flagStatus.makeFlags());
    }

    flagStatus.increase(ModifierFlag::NONE);
    EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L), flagStatus.makeFlags());
  }

  {
    FlagStatus flagStatus;
    Vector_ModifierFlag v;
    v.push_back(ModifierFlag::COMMAND_L);
    v.push_back(ModifierFlag::CONTROL_L);
    flagStatus.increase(ModifierFlag::SHIFT_L, v);
    EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L), flagStatus.makeFlags());
  }
  {
    FlagStatus flagStatus;
    Vector_ModifierFlag v;
    v.push_back(ModifierFlag::COMMAND_L);
    v.push_back(ModifierFlag::CONTROL_L);
    flagStatus.increase(ModifierFlag::COMMAND_L, v);
    EXPECT_EQ(Flags(ModifierFlag::COMMAND_L | ModifierFlag::CONTROL_L), flagStatus.makeFlags());
    flagStatus.decrease(v);
    EXPECT_EQ(Flags(0), flagStatus.makeFlags());
  }
}
Exemple #15
0
TEST(FlagStatus, lock_clear) {
  FlagStatus flagStatus;

  {
    Vector_ModifierFlag v;
    v.push_back(ModifierFlag::COMMAND_L);
    v.push_back(ModifierFlag::FN);
    v.push_back(ModifierFlag::SHIFT_L);
    flagStatus.lock_increase(v);
    EXPECT_EQ(ModifierFlag::COMMAND_L | ModifierFlag::FN | ModifierFlag::SHIFT_L, flagStatus.makeFlags());
  }
  {
    flagStatus.increase(ModifierFlag::CAPSLOCK);
    EXPECT_EQ(ModifierFlag::CAPSLOCK | ModifierFlag::COMMAND_L | ModifierFlag::FN | ModifierFlag::SHIFT_L,
              flagStatus.makeFlags());
  }

  flagStatus.lock_clear();
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());
}
Exemple #16
0
TEST(FlagStatus, negative_lock_clear) {
  FlagStatus flagStatus;

  {
    Vector_ModifierFlag v;
    v.push_back(ModifierFlag::COMMAND_L);
    v.push_back(ModifierFlag::FN);
    v.push_back(ModifierFlag::SHIFT_L);
    flagStatus.negative_lock_increase(v);
    EXPECT_EQ(Flags(0), flagStatus.makeFlags());

    flagStatus.increase(v);
    EXPECT_EQ(Flags(0), flagStatus.makeFlags());

    flagStatus.increase(v);
    EXPECT_EQ(ModifierFlag::COMMAND_L | ModifierFlag::FN | ModifierFlag::SHIFT_L, flagStatus.makeFlags());

    flagStatus.reset();
    EXPECT_EQ(Flags(0), flagStatus.makeFlags());

    flagStatus.increase(v);
    EXPECT_EQ(Flags(0), flagStatus.makeFlags());

    flagStatus.negative_lock_clear();
    EXPECT_EQ(ModifierFlag::COMMAND_L | ModifierFlag::FN | ModifierFlag::SHIFT_L, flagStatus.makeFlags());
  }
}
Exemple #17
0
TEST(FlagStatus, lazy_increase) {
  FlagStatus flagStatus;

  // +1 (total 1)
  flagStatus.lazy_increase(ModifierFlag::SHIFT_L);
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());

  // +0 (total 1)
  flagStatus.lazy_set_enable(true);
  EXPECT_EQ(Flags(ModifierFlag::SHIFT_L), flagStatus.makeFlags());

  // -1 (total 0)
  flagStatus.lazy_decrease(ModifierFlag::SHIFT_L);
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());

  // +1 (total 1)
  flagStatus.lazy_increase(ModifierFlag::SHIFT_L);
  EXPECT_EQ(Flags(ModifierFlag::SHIFT_L), flagStatus.makeFlags());

  flagStatus.lazy_set_enable(false);
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());

  // +2 (total 2)
  flagStatus.lazy_increase(ModifierFlag::SHIFT_L);
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());

  // +0 (total 2)
  flagStatus.lazy_set_enable(true);
  EXPECT_EQ(Flags(ModifierFlag::SHIFT_L), flagStatus.makeFlags());

  // -1 (total 1)
  flagStatus.lazy_decrease(ModifierFlag::SHIFT_L);
  EXPECT_EQ(Flags(ModifierFlag::SHIFT_L), flagStatus.makeFlags());

  // => 0 (lazy modifier is disabled when reset.)
  flagStatus.reset();

  // +1 (total 1)
  flagStatus.lazy_increase(ModifierFlag::SHIFT_L);
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());
}
Exemple #18
0
TEST(FlagStatus, makeFlags) {
  FlagStatus flagStatus;
  EXPECT_EQ(Flags(), flagStatus.makeFlags());

  flagStatus.set();
  EXPECT_EQ(Flags(), flagStatus.makeFlags());

  flagStatus.set(KeyCode::A, Flags(0));
  EXPECT_EQ(Flags(), flagStatus.makeFlags());

  // down SHIFT_L
  flagStatus.set(KeyCode::SHIFT_L, Flags(ModifierFlag::SHIFT_L));
  EXPECT_EQ(Flags(ModifierFlag::SHIFT_L), flagStatus.makeFlags());

  // no effect with ModifierFlag::NONE
  flagStatus.set(KeyCode::A, Flags(ModifierFlag::NONE));
  EXPECT_EQ(Flags(ModifierFlag::SHIFT_L), flagStatus.makeFlags());

  // down CONTROL_
  flagStatus.set(KeyCode::CONTROL_L, ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L);
  EXPECT_EQ(Flags(ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L), flagStatus.makeFlags());

  // down A
  flagStatus.set(KeyCode::A, ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L);
  EXPECT_EQ(Flags(ModifierFlag::SHIFT_L | ModifierFlag::CONTROL_L), flagStatus.makeFlags());

  // up SHIFT_L
  flagStatus.set(KeyCode::SHIFT_L, Flags(ModifierFlag::CONTROL_L));
  EXPECT_EQ(Flags(ModifierFlag::CONTROL_L), flagStatus.makeFlags());

  // up CONTROL_L
  flagStatus.set(KeyCode::CONTROL_L, Flags(0));
  EXPECT_EQ(Flags(), flagStatus.makeFlags());

  // All flags
  flagStatus.reset();
  flagStatus.set(KeyCode::CAPSLOCK, Flags(ModifierFlag::CAPSLOCK));
  EXPECT_EQ(Flags(ModifierFlag::CAPSLOCK), flagStatus.makeFlags());

  flagStatus.set(KeyCode::CAPSLOCK, Flags(0));
  EXPECT_EQ(Flags(0), flagStatus.makeFlags());

  flagStatus.reset();
  flagStatus.set(KeyCode::SHIFT_L, Flags(ModifierFlag::SHIFT_L));
  EXPECT_EQ(Flags(ModifierFlag::SHIFT_L), flagStatus.makeFlags());

  flagStatus.reset();
  flagStatus.set(KeyCode::SHIFT_R, Flags(ModifierFlag::SHIFT_R));
  EXPECT_EQ(Flags(ModifierFlag::SHIFT_R), flagStatus.makeFlags());

  flagStatus.reset();
  flagStatus.set(KeyCode::CONTROL_L, Flags(ModifierFlag::CONTROL_L));
  EXPECT_EQ(Flags(ModifierFlag::CONTROL_L), flagStatus.makeFlags());

  flagStatus.reset();
  flagStatus.set(KeyCode::CONTROL_R, Flags(ModifierFlag::CONTROL_R));
  EXPECT_EQ(Flags(ModifierFlag::CONTROL_R), flagStatus.makeFlags());

  flagStatus.reset();
  flagStatus.set(KeyCode::OPTION_L, Flags(ModifierFlag::OPTION_L));
  EXPECT_EQ(Flags(ModifierFlag::OPTION_L), flagStatus.makeFlags());

  flagStatus.reset();
  flagStatus.set(KeyCode::OPTION_R, Flags(ModifierFlag::OPTION_R));
  EXPECT_EQ(Flags(ModifierFlag::OPTION_R), flagStatus.makeFlags());

  flagStatus.reset();
  flagStatus.set(KeyCode::COMMAND_L, Flags(ModifierFlag::COMMAND_L));
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_L), flagStatus.makeFlags());

  flagStatus.reset();
  flagStatus.set(KeyCode::COMMAND_R, Flags(ModifierFlag::COMMAND_R));
  EXPECT_EQ(Flags(ModifierFlag::COMMAND_R), flagStatus.makeFlags());

  flagStatus.reset();
  flagStatus.set(KeyCode::FN, Flags(ModifierFlag::FN));
  EXPECT_EQ(Flags(ModifierFlag::FN), flagStatus.makeFlags());
}