Fix -Wsign-conversion warnings
googletest/test/gtest_xml_outfile2_test_.cc:48:39:
warning: implicit conversion turns floating-point number into integer:
'float' to 'int64_t' (aka 'long') [-Wfloat-conversion]
  RecordProperty("TestFloatProperty", float_prop);
  ~~~~~~~~~~~~~~                      ^~~~~~~~~~
googletest/test/gtest_xml_outfile2_test_.cc:51:40:
warning: implicit conversion turns floating-point number into integer:
'double' to 'int64_t' (aka 'long') [-Wfloat-conversion]
  RecordProperty("TestDoubleProperty", double_prop);
  ~~~~~~~~~~~~~~                       ^~~~~~~~~~~
googletest/test/gtest_xml_outfile2_test_.cc:57:39:
warning: implicit conversion changes signedness:
'size_t' (aka 'unsigned long') to 'int64_t' (aka 'long') [-Wsign-conversion]
  RecordProperty("TestSizetProperty", size_t_prop);
  ~~~~~~~~~~~~~~                      ^~~~~~~~~~~
PiperOrigin-RevId: 506644143
Change-Id: I9c2cd5f52daebe25e73bb97f696687797ed2cabf
			
			
This commit is contained in:
		
				
					committed by
					
						
						Copybara-Service
					
				
			
			
				
	
			
			
			
						parent
						
							4f7c63d991
						
					
				
				
					commit
					deaf5615f1
				
			@@ -297,7 +297,13 @@ class GTEST_API_ Test {
 | 
			
		||||
  // SetUp/TearDown method of Environment objects registered with Google
 | 
			
		||||
  // Test) will be output as attributes of the <testsuites> element.
 | 
			
		||||
  static void RecordProperty(const std::string& key, const std::string& value);
 | 
			
		||||
  static void RecordProperty(const std::string& key, int64_t value);
 | 
			
		||||
  // We do not define a custom serialization except for values that can be
 | 
			
		||||
  // converted to int64_t, but other values could be logged in this way.
 | 
			
		||||
  template <typename T, std::enable_if_t<std::is_convertible<T, int64_t>::value,
 | 
			
		||||
                                         bool> = true>
 | 
			
		||||
  static void RecordProperty(const std::string& key, const T& value) {
 | 
			
		||||
    RecordProperty(key, (Message() << static_cast<int64_t>(value)).GetString());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 protected:
 | 
			
		||||
  // Creates a Test object.
 | 
			
		||||
 
 | 
			
		||||
@@ -2459,11 +2459,6 @@ void Test::TearDown() {}
 | 
			
		||||
void Test::RecordProperty(const std::string& key, const std::string& value) {
 | 
			
		||||
  UnitTest::GetInstance()->RecordProperty(key, value);
 | 
			
		||||
}
 | 
			
		||||
// We do not define a customary serialization except for integers,
 | 
			
		||||
// but other values could be logged in this way.
 | 
			
		||||
void Test::RecordProperty(const std::string& key, int64_t value) {
 | 
			
		||||
  RecordProperty(key, (Message() << value).GetString());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace internal {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -88,7 +88,7 @@ EXPECTED_2 = {
 | 
			
		||||
        'time': '*',
 | 
			
		||||
        'timestamp': '*',
 | 
			
		||||
        'testsuite': [{
 | 
			
		||||
            'name': 'TestSomeProperties',
 | 
			
		||||
            'name': 'TestInt64Properties',
 | 
			
		||||
            'file': 'gtest_xml_outfile2_test_.cc',
 | 
			
		||||
            'line': 41,
 | 
			
		||||
            'status': 'RUN',
 | 
			
		||||
@@ -100,6 +100,13 @@ EXPECTED_2 = {
 | 
			
		||||
            'TestFloatProperty': '3',
 | 
			
		||||
            'TestDoubleProperty': '4',
 | 
			
		||||
            'TestSizetProperty': '5',
 | 
			
		||||
            'TestBoolProperty': '1',
 | 
			
		||||
            'TestCharProperty': '65',
 | 
			
		||||
            'TestInt16Property': '6',
 | 
			
		||||
            'TestInt32Property': '7',
 | 
			
		||||
            'TestInt64Property': '8',
 | 
			
		||||
            'TestEnumProperty': '9',
 | 
			
		||||
            'TestAtomicIntProperty': '10',
 | 
			
		||||
            'TearDownProp': '2',
 | 
			
		||||
        }],
 | 
			
		||||
    }],
 | 
			
		||||
 
 | 
			
		||||
@@ -38,21 +38,40 @@ class PropertyTwo : public testing::Test {
 | 
			
		||||
  void TearDown() override { RecordProperty("TearDownProp", 2); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
TEST_F(PropertyTwo, TestSomeProperties) {
 | 
			
		||||
// 'initializing': conversion from 'int' to 'short', possible loss of data
 | 
			
		||||
  GTEST_DISABLE_MSC_WARNINGS_PUSH_(4244)
 | 
			
		||||
 | 
			
		||||
  // Floats and doubles are written as int64_t, since RecordProperty takes an
 | 
			
		||||
  // int64_t, so we test that the values written are truncated to int64_t.
 | 
			
		||||
TEST_F(PropertyTwo, TestInt64Properties) {
 | 
			
		||||
  // Floats and doubles are written as int64_t, so we test that the values
 | 
			
		||||
  // written are truncated to int64_t.
 | 
			
		||||
  float float_prop = 3.25;
 | 
			
		||||
  RecordProperty("TestFloatProperty", float_prop);
 | 
			
		||||
 | 
			
		||||
  double double_prop = 4.75;
 | 
			
		||||
  RecordProperty("TestDoubleProperty", double_prop);
 | 
			
		||||
 | 
			
		||||
  GTEST_DISABLE_MSC_WARNINGS_POP_()  // 4244
 | 
			
		||||
 | 
			
		||||
  // Validate we can write an unsigned size_t as a property
 | 
			
		||||
  size_t size_t_prop = 5;
 | 
			
		||||
  RecordProperty("TestSizetProperty", size_t_prop);
 | 
			
		||||
 | 
			
		||||
  bool bool_prop = true;
 | 
			
		||||
  RecordProperty("TestBoolProperty", bool_prop);
 | 
			
		||||
 | 
			
		||||
  char char_prop = 'A';
 | 
			
		||||
  RecordProperty("TestCharProperty", char_prop);
 | 
			
		||||
 | 
			
		||||
  int16_t int16_prop = 6;
 | 
			
		||||
  RecordProperty("TestInt16Property", int16_prop);
 | 
			
		||||
 | 
			
		||||
  int32_t int32_prop = 7;
 | 
			
		||||
  RecordProperty("TestInt32Property", int32_prop);
 | 
			
		||||
 | 
			
		||||
  int64_t int64_prop = 8;
 | 
			
		||||
  RecordProperty("TestInt64Property", int64_prop);
 | 
			
		||||
 | 
			
		||||
  enum Foo {
 | 
			
		||||
    NINE = 9,
 | 
			
		||||
  };
 | 
			
		||||
  Foo enum_prop = NINE;
 | 
			
		||||
  RecordProperty("TestEnumProperty", enum_prop);
 | 
			
		||||
 | 
			
		||||
  std::atomic<int> atomic_int_prop(10);
 | 
			
		||||
  RecordProperty("TestAtomicIntProperty", atomic_int_prop);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -57,12 +57,19 @@ EXPECTED_XML_1 = """<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
EXPECTED_XML_2 = """<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<testsuites tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests">
 | 
			
		||||
  <testsuite name="PropertyTwo" tests="1" failures="0" skipped="0" disabled="0" errors="0" time="*" timestamp="*">
 | 
			
		||||
    <testcase name="TestSomeProperties" file="gtest_xml_outfile2_test_.cc" line="41" status="run" result="completed" time="*" timestamp="*" classname="PropertyTwo">
 | 
			
		||||
    <testcase name="TestInt64Properties" file="gtest_xml_outfile2_test_.cc" line="41" status="run" result="completed" time="*" timestamp="*" classname="PropertyTwo">
 | 
			
		||||
      <properties>
 | 
			
		||||
        <property name="SetUpProp" value="2"/>
 | 
			
		||||
        <property name="TestFloatProperty" value="3"/>
 | 
			
		||||
        <property name="TestDoubleProperty" value="4"/>
 | 
			
		||||
        <property name="TestSizetProperty" value="5"/>
 | 
			
		||||
        <property name="TestBoolProperty" value="1"/>
 | 
			
		||||
        <property name="TestCharProperty" value="65"/>
 | 
			
		||||
        <property name="TestInt16Property" value="6"/>
 | 
			
		||||
        <property name="TestInt32Property" value="7"/>
 | 
			
		||||
        <property name="TestInt64Property" value="8"/>
 | 
			
		||||
        <property name="TestEnumProperty" value="9"/>
 | 
			
		||||
        <property name="TestAtomicIntProperty" value="10"/>
 | 
			
		||||
        <property name="TearDownProp" value="2"/>
 | 
			
		||||
      </properties>
 | 
			
		||||
    </testcase>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user