// Copyright 2011 Google Inc. All Rights Reserved.

#include "runtime.h"

#include "gtest/gtest.h"

namespace art {
void ParseClassPath(const char* class_path, std::vector<std::string>& vec);
}

namespace {

TEST(RuntimeTest, ParseClassPath) {
  std::vector<std::string> vec;

  art::ParseClassPath("", vec);
  EXPECT_EQ(0U, vec.size());
  vec.clear();

  art::ParseClassPath(":", vec);
  EXPECT_EQ(0U, vec.size());
  vec.clear();

  art::ParseClassPath(":foo", vec);
  EXPECT_EQ(1U, vec.size());
  vec.clear();

  art::ParseClassPath("foo:", vec);
  EXPECT_EQ(1U, vec.size());
  vec.clear();

  art::ParseClassPath(":foo:", vec);
  EXPECT_EQ(1U, vec.size());
  vec.clear();

  art::ParseClassPath("foo:bar", vec);
  EXPECT_EQ(2U, vec.size());
  vec.clear();

  art::ParseClassPath(":foo:bar", vec);
  EXPECT_EQ(2U, vec.size());
  vec.clear();

  art::ParseClassPath("foo:bar:", vec);
  EXPECT_EQ(2U, vec.size());
  vec.clear();

  art::ParseClassPath(":foo:bar:", vec);
  EXPECT_EQ(2U, vec.size());
  vec.clear();

  art::ParseClassPath("foo:bar:baz", vec);
  EXPECT_EQ(3U, vec.size());
  vec.clear();

  art::ParseClassPath(":foo:bar:baz", vec);
  EXPECT_EQ(3U, vec.size());
  vec.clear();

  art::ParseClassPath("foo:bar:baz:", vec);
  EXPECT_EQ(3U, vec.size());
  vec.clear();

  art::ParseClassPath(":foo:bar:baz:", vec);
  EXPECT_EQ(3U, vec.size());
  vec.clear();
}

}  // namespace
