| 679 | |
| 680 | |
| 681 | TEST_P(AlignmentTest, CheckAlignment) |
| 682 | { |
| 683 | const AlignmentTestParams& p = GetParam(); |
| 684 | |
| 685 | dmBuffer::Result r = dmBuffer::Create(p.count, p.streams_decl, p.streams_decl_count, &buffer); |
| 686 | ASSERT_EQ(dmBuffer::RESULT_OK, r); |
| 687 | ASSERT_EQ(0u, ((uintptr_t)buffer) % 16); |
| 688 | |
| 689 | ASSERT_EQ(p.expected_size, dmBuffer::GetStructSize(buffer)); |
| 690 | |
| 691 | uint32_t datasize = 0; |
| 692 | uint8_t* data = 0; |
| 693 | r = dmBuffer::GetBytes(buffer, (void**)&data, &datasize); |
| 694 | ASSERT_EQ(p.count * p.expected_size, datasize); |
| 695 | |
| 696 | ASSERT_EQ(dmBuffer::RESULT_OK, r); |
| 697 | |
| 698 | for (uint32_t i = 0; i < p.streams_decl_count; ++i) |
| 699 | { |
| 700 | CLEAR_OUT_VARS(); |
| 701 | const dmBuffer::StreamDeclaration& stream_decl = p.streams_decl[i]; |
| 702 | r = dmBuffer::GetStream(buffer, stream_decl.m_Name, &out_stream, &out_count, &out_components, &out_stride); |
| 703 | ASSERT_EQ(dmBuffer::RESULT_OK, r); |
| 704 | ASSERT_EQ(p.count, out_count); |
| 705 | |
| 706 | // Offset from start |
| 707 | uintptr_t offset = (uintptr_t)out_stream - (uintptr_t)data; |
| 708 | ASSERT_EQ(p.expected_offsets[i], offset); |
| 709 | |
| 710 | uint32_t value_size = dmBuffer::GetSizeForValueType(stream_decl.m_Type); |
| 711 | ASSERT_EQ(0, ((uintptr_t)out_stream) % value_size); |
| 712 | |
| 713 | ASSERT_EQ(stream_decl.m_Count, out_components); |
| 714 | ASSERT_EQ(p.expected_size / value_size, out_stride); |
| 715 | } |
| 716 | |
| 717 | // No destroy of buffer, it's handled by the AlignmentTest class |
| 718 | } |
| 719 | |
| 720 | |
| 721 | struct AlignTestA |
nothing calls this directly
no test coverage detected