interpreter_unittest: fix memory leaks

Except for a few manual changes in SimpleTest around base_interpreter2,
this CL was is the result of the following Vim substitutions:

    %s/\([a-zA-Z]\+\)\* base_interpreter =\n\?\s*new \1(/\1 base_interpreter(
    %s/base_interpreter();/base_interpreter;
    %s/base_interpreter->/base_interpreter./g
    %s/TestInterpreterWrapper wrapper(base_interpreter);/TestInterpreterWrapper wrapper(\&base_interpreter);

BUG=b:318520168
TEST=add -fsanitize=address to compiler flags, run unit tests [0], and
     check no address sanitization failures are reported from
     interpreter_unittest.cc

[0]: cros_sdk env FEATURES="test" emerge-${BOARD} chromeos-base/gestures

Change-Id: Id4148d8264e6260bce4b0d16c15d5f54ed944ea6
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/gestures/+/5318356
Tested-by: Harry Cutts <hcutts@chromium.org>
Reviewed-by: Henry Barnor <hbarnor@chromium.org>
Reviewed-by: Kenneth Albanowski <kenalba@google.com>
Code-Coverage: Henry Barnor <hbarnor@chromium.org>
Commit-Queue: Harry Cutts <hcutts@chromium.org>
diff --git a/src/interpreter_unittest.cc b/src/interpreter_unittest.cc
index e0d1cff..ff5e785 100644
--- a/src/interpreter_unittest.cc
+++ b/src/interpreter_unittest.cc
@@ -75,9 +75,8 @@
 
 TEST(InterpreterTest, SimpleTest) {
   PropRegistry prop_reg;
-  InterpreterTestInterpreter* base_interpreter =
-      new InterpreterTestInterpreter(&prop_reg);
-  base_interpreter->SetEventLoggingEnabled(true);
+  InterpreterTestInterpreter base_interpreter(&prop_reg);
+  base_interpreter.SetEventLoggingEnabled(true);
   MetricsProperties mprops(&prop_reg);
 
   HardwareProperties hwprops = {
@@ -94,19 +93,19 @@
     .is_haptic_pad = 0,
   };
 
-  TestInterpreterWrapper wrapper(base_interpreter, &hwprops);
+  TestInterpreterWrapper wrapper(&base_interpreter, &hwprops);
 
-  base_interpreter->bool_prop_.val_ = 1;
-  base_interpreter->double_prop_.val_ = 1;
-  base_interpreter->int_prop_.val_ = 1;
-  base_interpreter->string_prop_.val_ = "x";
+  base_interpreter.bool_prop_.val_ = 1;
+  base_interpreter.double_prop_.val_ = 1;
+  base_interpreter.int_prop_.val_ = 1;
+  base_interpreter.string_prop_.val_ = "x";
 
   //if (prop_reg)
-  //  prop_reg->set_activity_log(&(base_interpreter->log_));
+  //  prop_reg->set_activity_log(&(base_interpreter.log_));
 
   char interpreter_name[] = "InterpreterTestInterpreter";
-  base_interpreter->expected_interpreter_name_ = interpreter_name;
-  base_interpreter->return_value_ = Gesture(kGestureMove,
+  base_interpreter.expected_interpreter_name_ = interpreter_name;
+  base_interpreter.return_value_ = Gesture(kGestureMove,
                                             0,  // start time
                                             1,  // end time
                                             -4,  // dx
@@ -119,39 +118,38 @@
   HardwareState hardware_state = make_hwstate(200000, 0, 1, 1, &finger_state);
 
   stime_t timeout = NO_DEADLINE;
-  base_interpreter->expected_hwstate_ = &hardware_state;
+  base_interpreter.expected_hwstate_ = &hardware_state;
   Gesture* result = wrapper.SyncInterpret(hardware_state, &timeout);
-  EXPECT_TRUE(base_interpreter->return_value_ == *result);
+  EXPECT_TRUE(base_interpreter.return_value_ == *result);
   ASSERT_GT(timeout, 0);
   stime_t now = hardware_state.timestamp + timeout;
   timeout = NO_DEADLINE;
   result = wrapper.HandleTimer(now, &timeout);
-  EXPECT_TRUE(base_interpreter->return_value_ == *result);
+  EXPECT_TRUE(base_interpreter.return_value_ == *result);
   ASSERT_LT(timeout, 0);
-  EXPECT_EQ(1, base_interpreter->interpret_call_count_);
-  EXPECT_EQ(1, base_interpreter->handle_timer_call_count_);
+  EXPECT_EQ(1, base_interpreter.interpret_call_count_);
+  EXPECT_EQ(1, base_interpreter.handle_timer_call_count_);
 
   // Now, get the log
-  string initial_log = base_interpreter->Encode();
+  string initial_log = base_interpreter.Encode();
   // Make a new interpreter and push the log through it
   PropRegistry prop_reg2;
-  InterpreterTestInterpreter* base_interpreter2 =
-      new InterpreterTestInterpreter(&prop_reg2);
-  base_interpreter2->SetEventLoggingEnabled(true);
-  base_interpreter2->return_value_ = base_interpreter->return_value_;
-  base_interpreter2->expected_interpreter_name_ = interpreter_name;
+  InterpreterTestInterpreter base_interpreter2(&prop_reg2);
+  base_interpreter2.SetEventLoggingEnabled(true);
+  base_interpreter2.return_value_ = base_interpreter.return_value_;
+  base_interpreter2.expected_interpreter_name_ = interpreter_name;
   MetricsProperties mprops2(&prop_reg2);
 
   ActivityReplay replay(&prop_reg2);
   replay.Parse(initial_log);
 
-  base_interpreter2->expected_hwstate_ = &hardware_state;
+  base_interpreter2.expected_hwstate_ = &hardware_state;
 
-  replay.Replay(base_interpreter2, &mprops2);
-  string final_log = base_interpreter2->Encode();
+  replay.Replay(&base_interpreter2, &mprops2);
+  string final_log = base_interpreter2.Encode();
   EXPECT_EQ(initial_log, final_log);
-  EXPECT_EQ(1, base_interpreter2->interpret_call_count_);
-  EXPECT_EQ(1, base_interpreter2->handle_timer_call_count_);
+  EXPECT_EQ(1, base_interpreter2.interpret_call_count_);
+  EXPECT_EQ(1, base_interpreter2.handle_timer_call_count_);
 }
 
 class InterpreterResetLogTestInterpreter : public Interpreter {
@@ -168,10 +166,9 @@
 
 TEST(InterpreterTest, ResetLogTest) {
   PropRegistry prop_reg;
-  InterpreterResetLogTestInterpreter* base_interpreter =
-      new InterpreterResetLogTestInterpreter();
-  base_interpreter->SetEventLoggingEnabled(true);
-  TestInterpreterWrapper wrapper(base_interpreter);
+  InterpreterResetLogTestInterpreter base_interpreter;
+  base_interpreter.SetEventLoggingEnabled(true);
+  TestInterpreterWrapper wrapper(&base_interpreter);
 
   FingerState finger_state = {
     // TM, Tm, WM, Wm, Press, Orientation, X, Y, TrID
@@ -180,24 +177,23 @@
   HardwareState hardware_state = make_hwstate(200000, 0, 1, 1, &finger_state);
   stime_t timeout = NO_DEADLINE;
   wrapper.SyncInterpret(hardware_state, &timeout);
-  EXPECT_EQ(base_interpreter->log_->size(), 1);
+  EXPECT_EQ(base_interpreter.log_->size(), 1);
 
   wrapper.SyncInterpret(hardware_state, &timeout);
-  EXPECT_EQ(base_interpreter->log_->size(), 2);
+  EXPECT_EQ(base_interpreter.log_->size(), 2);
 
   // Assume the ResetLog property is set.
-  base_interpreter->Clear();
-  EXPECT_EQ(base_interpreter->log_->size(), 0);
+  base_interpreter.Clear();
+  EXPECT_EQ(base_interpreter.log_->size(), 0);
 
   wrapper.SyncInterpret(hardware_state, &timeout);
-  EXPECT_EQ(base_interpreter->log_->size(), 1);
+  EXPECT_EQ(base_interpreter.log_->size(), 1);
 }
 
 TEST(InterpreterTest, LoggingDisabledByDefault) {
   PropRegistry prop_reg;
-  InterpreterResetLogTestInterpreter* base_interpreter =
-      new InterpreterResetLogTestInterpreter();
-  TestInterpreterWrapper wrapper(base_interpreter);
+  InterpreterResetLogTestInterpreter base_interpreter;
+  TestInterpreterWrapper wrapper(&base_interpreter);
 
   FingerState finger_state = {
     // TM, Tm, WM, Wm, Press, Orientation, X, Y, TrID
@@ -206,102 +202,98 @@
   HardwareState hardware_state = make_hwstate(200000, 0, 1, 1, &finger_state);
   stime_t timeout = NO_DEADLINE;
   wrapper.SyncInterpret(hardware_state, &timeout);
-  EXPECT_EQ(base_interpreter->log_->size(), 0);
+  EXPECT_EQ(base_interpreter.log_->size(), 0);
 
   wrapper.SyncInterpret(hardware_state, &timeout);
-  EXPECT_EQ(base_interpreter->log_->size(), 0);
+  EXPECT_EQ(base_interpreter.log_->size(), 0);
 }
 
 TEST(InterpreterTest, EventDebugLoggingEnableTest) {
-  InterpreterResetLogTestInterpreter* base_interpreter =
-      new InterpreterResetLogTestInterpreter();
+  InterpreterResetLogTestInterpreter base_interpreter;
 
-  base_interpreter->SetEventDebugLoggingEnabled(0);
-  EXPECT_EQ(base_interpreter->GetEventDebugLoggingEnabled(), 0);
+  base_interpreter.SetEventDebugLoggingEnabled(0);
+  EXPECT_EQ(base_interpreter.GetEventDebugLoggingEnabled(), 0);
 
   using EventDebug = ActivityLog::EventDebug;
-  base_interpreter->EventDebugLoggingEnable(EventDebug::HardwareState);
-  EXPECT_EQ(base_interpreter->GetEventDebugLoggingEnabled(),
+  base_interpreter.EventDebugLoggingEnable(EventDebug::HardwareState);
+  EXPECT_EQ(base_interpreter.GetEventDebugLoggingEnabled(),
             1 << static_cast<int>(EventDebug::HardwareState));
 
-  base_interpreter->EventDebugLoggingDisable(EventDebug::HardwareState);
-  EXPECT_EQ(base_interpreter->GetEventDebugLoggingEnabled(), 0);
+  base_interpreter.EventDebugLoggingDisable(EventDebug::HardwareState);
+  EXPECT_EQ(base_interpreter.GetEventDebugLoggingEnabled(), 0);
 }
 
 TEST(InterpreterTest, LogHardwareStateTest) {
   PropRegistry prop_reg;
-  InterpreterResetLogTestInterpreter* base_interpreter =
-      new InterpreterResetLogTestInterpreter();
+  InterpreterResetLogTestInterpreter base_interpreter;
 
   FingerState fs = { 0.0, 0.0, 0.0, 0.0, 9.0, 0.0, 3.0, 4.0, 22, 0 };
   HardwareState hs = make_hwstate(1.0, 0, 1, 1, &fs);
 
-  base_interpreter->SetEventLoggingEnabled(false);
-  base_interpreter->SetEventDebugLoggingEnabled(0);
+  base_interpreter.SetEventLoggingEnabled(false);
+  base_interpreter.SetEventDebugLoggingEnabled(0);
 
-  base_interpreter->LogHardwareStatePre(
+  base_interpreter.LogHardwareStatePre(
       "InterpreterTest_LogHardwareStateTest", hs);
-  EXPECT_EQ(base_interpreter->log_->size(), 0);
+  EXPECT_EQ(base_interpreter.log_->size(), 0);
 
-  base_interpreter->LogHardwareStatePost(
+  base_interpreter.LogHardwareStatePost(
       "InterpreterTest_LogHardwareStateTest", hs);
-  EXPECT_EQ(base_interpreter->log_->size(), 0);
+  EXPECT_EQ(base_interpreter.log_->size(), 0);
 
   using EventDebug = ActivityLog::EventDebug;
-  base_interpreter->SetEventLoggingEnabled(true);
-  base_interpreter->EventDebugLoggingEnable(EventDebug::HardwareState);
+  base_interpreter.SetEventLoggingEnabled(true);
+  base_interpreter.EventDebugLoggingEnable(EventDebug::HardwareState);
 
-  base_interpreter->LogHardwareStatePre(
+  base_interpreter.LogHardwareStatePre(
       "InterpreterTest_LogHardwareStateTest", hs);
-  EXPECT_EQ(base_interpreter->log_->size(), 1);
+  EXPECT_EQ(base_interpreter.log_->size(), 1);
 
-  base_interpreter->LogHardwareStatePost(
+  base_interpreter.LogHardwareStatePost(
       "InterpreterTest_LogHardwareStateTest", hs);
-  EXPECT_EQ(base_interpreter->log_->size(), 2);
+  EXPECT_EQ(base_interpreter.log_->size(), 2);
 }
 
 TEST(InterpreterTest, LogGestureTest) {
   PropRegistry prop_reg;
-  InterpreterResetLogTestInterpreter* base_interpreter =
-      new InterpreterResetLogTestInterpreter();
+  InterpreterResetLogTestInterpreter base_interpreter;
 
   Gesture move(kGestureMove, 1.0, 2.0, 773, 4.0);
 
-  base_interpreter->SetEventLoggingEnabled(false);
-  base_interpreter->SetEventDebugLoggingEnabled(0);
-  base_interpreter->LogGestureConsume("InterpreterTest_LogGestureTest", move);
-  EXPECT_EQ(base_interpreter->log_->size(), 0);
-  base_interpreter->LogGestureProduce("InterpreterTest_LogGestureTest", move);
-  EXPECT_EQ(base_interpreter->log_->size(), 0);
+  base_interpreter.SetEventLoggingEnabled(false);
+  base_interpreter.SetEventDebugLoggingEnabled(0);
+  base_interpreter.LogGestureConsume("InterpreterTest_LogGestureTest", move);
+  EXPECT_EQ(base_interpreter.log_->size(), 0);
+  base_interpreter.LogGestureProduce("InterpreterTest_LogGestureTest", move);
+  EXPECT_EQ(base_interpreter.log_->size(), 0);
 
 
   using EventDebug = ActivityLog::EventDebug;
-  base_interpreter->SetEventLoggingEnabled(true);
-  base_interpreter->EventDebugLoggingEnable(EventDebug::Gesture);
-  base_interpreter->LogGestureConsume("InterpreterTest_LogGestureTest", move);
-  EXPECT_EQ(base_interpreter->log_->size(), 1);
-  base_interpreter->LogGestureProduce("InterpreterTest_LogGestureTest", move);
-  EXPECT_EQ(base_interpreter->log_->size(), 2);
+  base_interpreter.SetEventLoggingEnabled(true);
+  base_interpreter.EventDebugLoggingEnable(EventDebug::Gesture);
+  base_interpreter.LogGestureConsume("InterpreterTest_LogGestureTest", move);
+  EXPECT_EQ(base_interpreter.log_->size(), 1);
+  base_interpreter.LogGestureProduce("InterpreterTest_LogGestureTest", move);
+  EXPECT_EQ(base_interpreter.log_->size(), 2);
 }
 
 TEST(InterpreterTest, LogHandleTimerTest) {
   PropRegistry prop_reg;
-  InterpreterResetLogTestInterpreter* base_interpreter =
-      new InterpreterResetLogTestInterpreter();
+  InterpreterResetLogTestInterpreter base_interpreter;
 
   using EventDebug = ActivityLog::EventDebug;
-  base_interpreter->SetEventLoggingEnabled(true);
-  base_interpreter->EventDebugLoggingEnable(EventDebug::HandleTimer);
+  base_interpreter.SetEventLoggingEnabled(true);
+  base_interpreter.EventDebugLoggingEnable(EventDebug::HandleTimer);
 
   stime_t timeout = 10;
 
-  base_interpreter->LogHandleTimerPre("InterpreterTest_LogHandleTimerTest",
+  base_interpreter.LogHandleTimerPre("InterpreterTest_LogHandleTimerTest",
         0, &timeout);
-  EXPECT_EQ(base_interpreter->log_->size(), 1);
+  EXPECT_EQ(base_interpreter.log_->size(), 1);
 
-  base_interpreter->LogHandleTimerPost("InterpreterTest_LogHandleTimerTest",
+  base_interpreter.LogHandleTimerPost("InterpreterTest_LogHandleTimerTest",
         0, &timeout);
-  EXPECT_EQ(base_interpreter->log_->size(), 2);
+  EXPECT_EQ(base_interpreter.log_->size(), 2);
 }
 
 }  // namespace gestures