mirror of
https://github.com/zoriya/ComSquare.git
synced 2025-12-20 14:15:11 +00:00
Starting testing
This commit is contained in:
@@ -10,8 +10,8 @@ add_compile_options(-W -Wall -Wextra -Wshadow)
|
||||
# make unit tests
|
||||
add_executable(unit_tests
|
||||
tests/testCPU.cpp
|
||||
sources/PPU/PPU.cpp
|
||||
sources/PPU/PPU.hpp
|
||||
tests/testMemoryBus.cpp
|
||||
tests/communism.hpp
|
||||
sources/SNES.cpp
|
||||
sources/SNES.hpp
|
||||
sources/Memory/MemoryBus.cpp
|
||||
@@ -39,9 +39,14 @@ add_executable(unit_tests
|
||||
sources/Memory/IRectangleMemory.hpp
|
||||
sources/APU/DSP/DSP.cpp
|
||||
sources/APU/DSP/DSP.hpp
|
||||
sources/Renderer/IRenderer.hpp
|
||||
sources/Renderer/NoRenderer.hpp
|
||||
sources/Renderer/NoRenderer.cpp
|
||||
sources/Exceptions/InvalidAction.hpp
|
||||
sources/Cartridge/InterruptVectors.hpp
|
||||
sources/Memory/RectangleShadow.cpp
|
||||
sources/Memory/RectangleShadow.hpp
|
||||
sources/Renderer/NoRenderer.cpp sources/Renderer/NoRenderer.hpp)
|
||||
)
|
||||
|
||||
# include criterion & coverage
|
||||
target_link_libraries(unit_tests criterion -lgcov)
|
||||
|
||||
@@ -93,7 +93,7 @@ $(function() {
|
||||
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  </div>
|
||||
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  std::shared_ptr<IMemory> <a class="code" href="classComSquare_1_1Memory_1_1MemoryBus.html#a1b7ba0ca63589d971404e1b7031f26c1">getAccessor</a>(<a class="code" href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a> addr);</div>
|
||||
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  </div>
|
||||
<div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="classComSquare_1_1Memory_1_1MemoryBus.html#ab55064b581ef9348bc47e0f277a0439d"> 31</a></span>  uint8_t <a class="code" href="classComSquare_1_1Memory_1_1MemoryBus.html#ab55064b581ef9348bc47e0f277a0439d">_openbus</a> = 0;</div>
|
||||
<div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="classComSquare_1_1Memory_1_1MemoryBus.html#ab55064b581ef9348bc47e0f277a0439d"> 31</a></span>  uint8_t <a class="code" href="classComSquare_1_1Memory_1_1MemoryBus.html#ab55064b581ef9348bc47e0f277a0439d">_openBus</a> = 0;</div>
|
||||
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  </div>
|
||||
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classComSquare_1_1Memory_1_1MemoryBus.html#afa5f49e6918eb466bc9116f042c7c636">_mirrorComponents</a>(<a class="code" href="structComSquare_1_1SNES.html">SNES</a> &console, <span class="keywordtype">int</span> i);</div>
|
||||
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  </div>
|
||||
@@ -117,7 +117,7 @@ $(function() {
|
||||
<div class="ttc" id="aInts_8hpp_html_a89f009aaf5d1964a000f44f09fa0bcf8"><div class="ttname"><a href="Ints_8hpp.html#a89f009aaf5d1964a000f44f09fa0bcf8">uint24_t</a></div><div class="ttdeci">unsigned uint24_t</div><div class="ttdef"><b>Definition:</b> Ints.hpp:8</div></div>
|
||||
<div class="ttc" id="aclassComSquare_1_1Memory_1_1MemoryBus_html_a1387b77513d9e0d077291477faab46cd"><div class="ttname"><a href="classComSquare_1_1Memory_1_1MemoryBus.html#a1387b77513d9e0d077291477faab46cd">ComSquare::Memory::MemoryBus::write</a></div><div class="ttdeci">void write(uint24_t addr, uint8_t data)</div><div class="ttdoc">Write a data to a global address.</div><div class="ttdef"><b>Definition:</b> MemoryBus.cpp:37</div></div>
|
||||
<div class="ttc" id="aclassComSquare_1_1Memory_1_1MemoryBus_html_a1b7ba0ca63589d971404e1b7031f26c1"><div class="ttname"><a href="classComSquare_1_1Memory_1_1MemoryBus.html#a1b7ba0ca63589d971404e1b7031f26c1">ComSquare::Memory::MemoryBus::getAccessor</a></div><div class="ttdeci">std::shared_ptr< IMemory > getAccessor(uint24_t addr)</div><div class="ttdoc">Helper function to get the components that is responsible of read/write at an address.</div><div class="ttdef"><b>Definition:</b> MemoryBus.cpp:13</div></div>
|
||||
<div class="ttc" id="aclassComSquare_1_1Memory_1_1MemoryBus_html_ab55064b581ef9348bc47e0f277a0439d"><div class="ttname"><a href="classComSquare_1_1Memory_1_1MemoryBus.html#ab55064b581ef9348bc47e0f277a0439d">ComSquare::Memory::MemoryBus::_openbus</a></div><div class="ttdeci">uint8_t _openbus</div><div class="ttdoc">The last value read via the memory bus.</div><div class="ttdef"><b>Definition:</b> MemoryBus.hpp:31</div></div>
|
||||
<div class="ttc" id="aclassComSquare_1_1Memory_1_1MemoryBus_html_ab55064b581ef9348bc47e0f277a0439d"><div class="ttname"><a href="classComSquare_1_1Memory_1_1MemoryBus.html#ab55064b581ef9348bc47e0f277a0439d">ComSquare::Memory::MemoryBus::_openBus</a></div><div class="ttdeci">uint8_t _openBus</div><div class="ttdoc">The last value read via the memory bus.</div><div class="ttdef"><b>Definition:</b> MemoryBus.hpp:31</div></div>
|
||||
<div class="ttc" id="aclassComSquare_1_1Memory_1_1MemoryBus_html_a21e37ae17ad577a34af5ba49fbdf7180"><div class="ttname"><a href="classComSquare_1_1Memory_1_1MemoryBus.html#a21e37ae17ad577a34af5ba49fbdf7180">ComSquare::Memory::MemoryBus::mapComponents</a></div><div class="ttdeci">void mapComponents(SNES &console)</div><div class="ttdoc">Map components to the address space using the currently loaded cartridge to set the right mapping mod...</div><div class="ttdef"><b>Definition:</b> MemoryBus.cpp:56</div></div>
|
||||
<div class="ttc" id="aIMemory_8hpp_html"><div class="ttname"><a href="IMemory_8hpp.html">IMemory.hpp</a></div></div>
|
||||
<div class="ttc" id="aclassComSquare_1_1Memory_1_1MemoryBus_html_afa5f49e6918eb466bc9116f042c7c636"><div class="ttname"><a href="classComSquare_1_1Memory_1_1MemoryBus.html#afa5f49e6918eb466bc9116f042c7c636">ComSquare::Memory::MemoryBus::_mirrorComponents</a></div><div class="ttdeci">void _mirrorComponents(SNES &console, int i)</div><div class="ttdoc">WRam, CPU, PPU & ALU registers are mirrored to all banks of Q1 & Q3. This function is used for the mi...</div><div class="ttdef"><b>Definition:</b> MemoryBus.cpp:48</div></div>
|
||||
|
||||
@@ -74,7 +74,7 @@ $(function() {
|
||||
<table class="directory">
|
||||
<tr class="even"><td class="entry"><a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html#a2c2385dddba2ec8f143f2d88a58a9431">_memoryAccessors</a></td><td class="entry"><a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html">ComSquare::Memory::MemoryBus</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
|
||||
<tr><td class="entry"><a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html#afa5f49e6918eb466bc9116f042c7c636">_mirrorComponents</a>(SNES &console, int i)</td><td class="entry"><a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html">ComSquare::Memory::MemoryBus</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">private</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html#ab55064b581ef9348bc47e0f277a0439d">_openbus</a></td><td class="entry"><a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html">ComSquare::Memory::MemoryBus</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html#ab55064b581ef9348bc47e0f277a0439d">_openBus</a></td><td class="entry"><a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html">ComSquare::Memory::MemoryBus</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
|
||||
<tr><td class="entry"><a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html#a1b7ba0ca63589d971404e1b7031f26c1">getAccessor</a>(uint24_t addr)</td><td class="entry"><a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html">ComSquare::Memory::MemoryBus</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
|
||||
<tr class="even"><td class="entry"><a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html#a21e37ae17ad577a34af5ba49fbdf7180">mapComponents</a>(SNES &console)</td><td class="entry"><a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html">ComSquare::Memory::MemoryBus</a></td><td class="entry"></td></tr>
|
||||
<tr><td class="entry"><a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html#a66fe80e0dafb6078eabf809b2ecd6dae">read</a>(uint24_t addr)</td><td class="entry"><a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html">ComSquare::Memory::MemoryBus</a></td><td class="entry"></td></tr>
|
||||
|
||||
@@ -114,7 +114,7 @@ Private Attributes</h2></td></tr>
|
||||
<tr class="memitem:a2c2385dddba2ec8f143f2d88a58a9431"><td class="memItemLeft" align="right" valign="top">std::vector< std::shared_ptr< <a class="el" href="classComSquare_1_1Memory_1_1IMemory.html">IMemory</a> > > </td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html#a2c2385dddba2ec8f143f2d88a58a9431">_memoryAccessors</a></td></tr>
|
||||
<tr class="memdesc:a2c2385dddba2ec8f143f2d88a58a9431"><td class="mdescLeft"> </td><td class="mdescRight">The list of components registered inside the bus. Every components that can read/write to a public address should be in this vector. <a href="classComSquare_1_1Memory_1_1MemoryBus.html#a2c2385dddba2ec8f143f2d88a58a9431">More...</a><br /></td></tr>
|
||||
<tr class="separator:a2c2385dddba2ec8f143f2d88a58a9431"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ab55064b581ef9348bc47e0f277a0439d"><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html#ab55064b581ef9348bc47e0f277a0439d">_openbus</a> = 0</td></tr>
|
||||
<tr class="memitem:ab55064b581ef9348bc47e0f277a0439d"><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html#ab55064b581ef9348bc47e0f277a0439d">_openBus</a> = 0</td></tr>
|
||||
<tr class="memdesc:ab55064b581ef9348bc47e0f277a0439d"><td class="mdescLeft"> </td><td class="mdescRight">The last value read via the memory bus. <a href="classComSquare_1_1Memory_1_1MemoryBus.html#ab55064b581ef9348bc47e0f277a0439d">More...</a><br /></td></tr>
|
||||
<tr class="separator:ab55064b581ef9348bc47e0f277a0439d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
@@ -317,7 +317,7 @@ Private Attributes</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="ab55064b581ef9348bc47e0f277a0439d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab55064b581ef9348bc47e0f277a0439d">◆ </a></span>_openbus</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab55064b581ef9348bc47e0f277a0439d">◆ </a></span>_openBus</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -326,7 +326,7 @@ Private Attributes</h2></td></tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">uint8_t ComSquare::Memory::MemoryBus::_openbus = 0</td>
|
||||
<td class="memname">uint8_t ComSquare::Memory::MemoryBus::_openBus = 0</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
@@ -122,7 +122,7 @@ $(function() {
|
||||
, <a class="el" href="classComSquare_1_1InvalidAddress.html#abef5292580bf0d3c65d407be0edec912">ComSquare::InvalidAddress</a>
|
||||
, <a class="el" href="classComSquare_1_1InvalidRomException.html#ae174e316e7eb3a2e73defdeeede8c288">ComSquare::InvalidRomException</a>
|
||||
</li>
|
||||
<li>_openbus
|
||||
<li>_openBus
|
||||
: <a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html#ab55064b581ef9348bc47e0f277a0439d">ComSquare::Memory::MemoryBus</a>
|
||||
</li>
|
||||
<li>_registers
|
||||
|
||||
@@ -110,7 +110,7 @@ $(function() {
|
||||
, <a class="el" href="classComSquare_1_1InvalidAddress.html#abef5292580bf0d3c65d407be0edec912">ComSquare::InvalidAddress</a>
|
||||
, <a class="el" href="classComSquare_1_1InvalidRomException.html#ae174e316e7eb3a2e73defdeeede8c288">ComSquare::InvalidRomException</a>
|
||||
</li>
|
||||
<li>_openbus
|
||||
<li>_openBus
|
||||
: <a class="el" href="classComSquare_1_1Memory_1_1MemoryBus.html#ab55064b581ef9348bc47e0f277a0439d">ComSquare::Memory::MemoryBus</a>
|
||||
</li>
|
||||
<li>_registers
|
||||
|
||||
@@ -146,9 +146,9 @@ Write a data to a global address.
|
||||
The list of components registered inside the bus. Every components that can read/write to a public address should be in this vector.
|
||||
|
||||
\mbox{\Hypertarget{classComSquare_1_1Memory_1_1MemoryBus_ab55064b581ef9348bc47e0f277a0439d}\label{classComSquare_1_1Memory_1_1MemoryBus_ab55064b581ef9348bc47e0f277a0439d}}
|
||||
\index{ComSquare::Memory::MemoryBus@{ComSquare::Memory::MemoryBus}!\_openbus@{\_openbus}}
|
||||
\index{\_openbus@{\_openbus}!ComSquare::Memory::MemoryBus@{ComSquare::Memory::MemoryBus}}
|
||||
\doxysubsubsection{\texorpdfstring{\_openbus}{\_openbus}}
|
||||
\index{ComSquare::Memory::MemoryBus@{ComSquare::Memory::MemoryBus}!\_openBus@{\_openBus}}
|
||||
\index{\_openBus@{\_openBus}!ComSquare::Memory::MemoryBus@{ComSquare::Memory::MemoryBus}}
|
||||
\doxysubsubsection{\texorpdfstring{\_openBus}{\_openBus}}
|
||||
{\footnotesize\ttfamily uint8\+\_\+t Com\+Square\+::\+Memory\+::\+Memory\+Bus\+::\+\_\+openbus = 0\hspace{0.3cm}{\ttfamily [private]}}
|
||||
|
||||
|
||||
|
||||
@@ -28,10 +28,10 @@ namespace ComSquare::Memory
|
||||
|
||||
if (!handler) {
|
||||
std::cout << "Unknown memory accessor for address " << std::hex << addr << ". Using open bus." << std::endl;
|
||||
return this->_openbus;
|
||||
return this->_openBus;
|
||||
}
|
||||
uint8_t data = handler->read(addr - handler->getStart());
|
||||
this->_openbus = data;
|
||||
this->_openBus = data;
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,9 +28,9 @@ namespace ComSquare
|
||||
std::shared_ptr<IMemory> getAccessor(uint24_t addr);
|
||||
|
||||
//! @brief The last value read via the memory bus.
|
||||
uint8_t _openbus = 0;
|
||||
uint8_t _openBus = 0;
|
||||
|
||||
//! @brief WRam, CPU, PPU & ALU registers are mirrored to all banks of Q1 & Q3. This function is used for the mirroring.
|
||||
//! @brief WRam, CPU, PPU & APU registers are mirrored to all banks of Q1 & Q3. This function is used for the mirroring.
|
||||
//! @param console All the components.
|
||||
//! @param i Base address for the mirrors.
|
||||
inline void _mirrorComponents(SNES &console, int i);
|
||||
|
||||
12
tests/communism.hpp
Normal file
12
tests/communism.hpp
Normal file
@@ -0,0 +1,12 @@
|
||||
//
|
||||
// Created by Melefp on 05/02/2020.
|
||||
//
|
||||
|
||||
#ifndef COMSQUARE_COMMUNISM_HPP
|
||||
#define COMSQUARE_COMMUNISM_HPP
|
||||
|
||||
#define private public
|
||||
#define protected public
|
||||
#define class struct
|
||||
|
||||
#endif //COMSQUARE_COMMUNISM_HPP
|
||||
55
tests/testMemoryBus.cpp
Normal file
55
tests/testMemoryBus.cpp
Normal file
@@ -0,0 +1,55 @@
|
||||
//
|
||||
// Created by Melefo on 05/02/2020.
|
||||
//
|
||||
|
||||
#include <criterion/criterion.h>
|
||||
#include "communism.hpp"
|
||||
#include "../sources/Memory/MemoryBus.hpp"
|
||||
#include "../sources/Memory/IMemory.hpp"
|
||||
#include "../sources/SNES.hpp"
|
||||
#include "../sources/Renderer/NoRenderer.hpp"
|
||||
|
||||
|
||||
using namespace ComSquare;
|
||||
|
||||
std::pair<Memory::MemoryBus, SNES> Init()
|
||||
{
|
||||
Memory::MemoryBus bus;
|
||||
Renderer::NoRenderer norenderer(0, 0, 0);
|
||||
SNES snes(std::make_shared<Memory::MemoryBus>(bus), "", norenderer);
|
||||
snes.cartridge->_size = 10;
|
||||
snes.cartridge->_data = new uint8_t[snes.cartridge->_size];
|
||||
snes.cartridge->header.mappingMode = Cartridge::LoRom;
|
||||
bus.mapComponents(snes);
|
||||
return std::make_pair(bus, snes);
|
||||
}
|
||||
|
||||
Test(BusAccessor, GetRom)
|
||||
{
|
||||
auto pair = Init();
|
||||
std::shared_ptr<Memory::IMemory> accessor = nullptr;
|
||||
|
||||
accessor = pair.first.getAccessor(0xFFFFEF);
|
||||
printf("%p %p", accessor.get(), pair.second.cartridge.get());
|
||||
cr_assert_eq(accessor.get(), pair.second.cartridge.get());
|
||||
}
|
||||
|
||||
Test(BusWrite, )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Test(BusRead, )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Test(BusMapping, )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Test(BusMirror, )
|
||||
{
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user