/*
- * Copyright 2017 Facebook, Inc.
+ * Copyright 2011-present Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
return 2000 + folly::estimateSpaceNeeded(in.w) +
folly::estimateSpaceNeeded(in.h);
}
+
+enum class SmallEnum {};
+
+Expected<StringPiece, ConversionCode> parseTo(StringPiece in, SmallEnum& out) {
+ out = {};
+ if (in == "SmallEnum") {
+ return in.removePrefix(in), in;
+ } else {
+ return makeUnexpected(ConversionCode::STRING_TO_FLOAT_ERROR);
+ }
+}
+
+template <class String>
+void toAppend(SmallEnum, String* result) {
+ folly::toAppend("SmallEnum", result);
+}
} // namespace my
TEST(Conv, custom_kkproviders) {
// make sure above implementation of estimateSpaceNeeded() is used.
EXPECT_GT(str.capacity(), 2000);
EXPECT_LT(str.capacity(), 2500);
+ // toAppend with other arguments
+ toAppend("|", expected, &str);
+ EXPECT_EQ("7x8|7x8", str);
+}
+
+TEST(conv, custom_enumclass) {
+ EXPECT_EQ(my::SmallEnum{}, folly::to<my::SmallEnum>("SmallEnum"));
+ EXPECT_EQ(my::SmallEnum{}, folly::tryTo<my::SmallEnum>("SmallEnum").value());
+ auto str = to<string>(my::SmallEnum{});
+ toAppend("|", my::SmallEnum{}, &str);
+ EXPECT_EQ("SmallEnum|SmallEnum", str);
}
TEST(Conv, TryToThenWithVoid) {