オブジェクト追跡の自動テスト実装 #13
オブジェクト追跡の自動テスト実装 #13
Comments
同じ領域を複数回保存/回復する件この件について検討しました。 そこで、今回、オブジェクト追跡のエラー処理を見直し、同じ領域の複数回の保存/回復はエラーにしないようにしました。 |
通常ポインタのオブジェクト追跡実装完了 自動型と手動型の保存/回復 非constポインタのテスト追加 ----------------- MD5 Hash Values ----------------- TheolizerDriver : 7e039fe85ae29b7b5a619d85fa82fb24 TheolizerLibrary : 3aa647a8a4af09e5614b6318d02b1315 Library's Header : a401c2cf4493033d4fbfe383a8af5052
THEOLIZER_PROCESS_OWNER()がポインタの配列をエラーにしていたので修正。 ポインタのみ許可していた。ポインタの配列も許可する。 ----------------- MD5 Hash Values ----------------- TheolizerDriver : 3783b46bbd6c21d319f84b8e56b8b063 TheolizerLibrary : 056dda7dee327c9f714b054fa58926e0 Library's Header : 71814fc0843a0642c43e62a3a77e2705 ----------------- MD5 Hash Values ----------------- TheolizerDriver : 3783b46bbd6c21d319f84b8e56b8b063 TheolizerLibrary : 056dda7dee327c9f714b054fa58926e0 Library's Header : 71814fc0843a0642c43e62a3a77e2705
THEOLIZER_PROCESS_OWNER()がポインタの配列をエラーにしていたので修正。 ポインタのみ許可していた。ポインタの配列も許可する。 ----------------- MD5 Hash Values ----------------- TheolizerDriver : 3783b46bbd6c21d319f84b8e56b8b063 TheolizerLibrary : 056dda7dee327c9f714b054fa58926e0 Library's Header : 71814fc0843a0642c43e62a3a77e2705
2番目の基底クラス対応不具合のある旧コードを削除した。 自動テスト内容修正と追加 手動型の保存/回復テスト追加 基底クラスの設定値を派生クラス側で決定できるように変更。 自動型の基底クラスを抽象クラスとした。 手動型の基底クラスを抽象クラスにすることは非サポートとした。 ----------------- MD5 Hash Values ----------------- TheolizerDriver : 463af7f4ad911a462d28269becfac018 TheolizerLibrary : c3258b874dce8a6a5ca7701809a957c0 Library's Header : 7d8420e2feb16e770f58334e816f21f8
あけましておめでとうございます。 やっとポリモーフィズムを含むオブジェクト追跡の自動テストの実装を完了しました。 2番目以降の基底クラスへのポインタから派生クラスをシリアライズする時の不具合修正動的処理するために、ポインタを一度void*へ変更していたため、2番目以降の基底クラスへのポインタで派生クラスを保存/回復する時、ポインタの指すアドレスを適切に変換できていませんでした。 2番目以降の基底クラスへのポインタのアドレス != 派生クラスへのポインタのアドレスなので、この変換はコンパイラに任せる必要があるのに、void*へreinterpret_castしていたため、アドレス変換されず不適切なアドレスでシリアライズ処理してました。 ポリモーフィズム対応処理を全体的に見直し、基底クラスへのポインタと派生クラスへのポインタを変換する時は、static_cast<>で変換できるよう静的処理するように変更しました。 非侵入型手動クラスを抽象クラスにすることを非サポート非侵入型完全自動クラスと侵入型半自動クラスは、メンバ変数をTheolizerが別途生成して管理するため、抽象型でも領域確保でき、サポートできます。 自動型はそれが包含するクラスについて、クラス毎にバージョン間の引き継ぎを行います。 領域確保するための派生クラスをドライバにて自動生成する等の手法でサポートすることは可能と思いますが、現時点では保留します。 |
バージョン名の-Prerelease.を外す。 ----------------- MD5 Hash Values ----------------- TheolizerDriver : 6d52e3e0546d7b69fef4e8d5e8ab3d45 TheolizerLibrary : c22dbeac8963bdecb4a70dc2f7cc234e Library's Header : 746959b760b766a8c6dcd23aa380b2c7
実装完了し、v.0.4.2としてリリースしましたので、クローズします。 |
トップ・レベルにおける保存/回復の実装が概ね完了したので、プッシュします。
コミットを細かく刻む方向にしようと考えているのですが、今回はコミットを刻みこそないました。
今後、もう少し刻むよう努力します。
★1点仕様を検討中です。
普通にクラス・オブジェクトを保存する際、同じ領域を複数回保存してもエラー・チェックできないため、エラーにできません。・・・(1)
しかし、オブジェクト追跡している時は、同じ領域が複数回保存されると回復時混乱するため、エラーにしてました。
そして、クラス・オブジェクトへのポインタをシリアライズした場合、そのクラスのオブジェクトを全て自動的にオブジェクト追跡します。
クラスのバリエーション・テストで複数回保存していた(1)のクラスを、今回のオブジェクト追跡テストに用いたところ、クラスのバリエーション・テストでエラーが発生するようになりました。
私自身が原因追求に苦しんだため、一旦、(1)のケースはエラーにならないように修正しました。
だがしかし、本質的にエラーを検出した方がユーザのバグを検出しやすいです。
なので、どうするか検討中です。
The text was updated successfully, but these errors were encountered: