# Expanding the set of bmi-tester properties

**URL:** <https://forum.csdms.io/t/expanding-the-set-of-bmi-tester-properties/79>\
**Category:** BMI\
**Created:** [January 6, 2025, 3:01pm UTC](https://forum.csdms.io/t/expanding-the-set-of-bmi-tester-properties/79 "2025-01-06T15:01:31Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![dorchard](https://yyz2.discourse-cdn.com/flex012/user_avatar/forum.csdms.io/dorchard/32/8_2.png) [@dorchard](https://forum.csdms.io/u/dorchard)\
**Post date:** [January 6, 2025, 3:01pm UTC](https://forum.csdms.io/t/expanding-the-set-of-bmi-tester-properties/79/1 "2025-01-06T15:01:31Z")

</div>

Last term I started taking a look at the [bmi-tester](https://github.com/csdms/bmi-tester), which is really neat. I really like the idea of being able to go further than the syntactic interface of a BMI model and probe its semantics; essentially bmi-tester implements a behaviour specification for BMI-implementing models.

Given that BMI models are potentially stateful, via input and output variables, I thought that it would make sense to extend the behaviour specification with testing of the ‘get’/‘set’ behaviour. i.e., that if you ‘set’ then you can ‘get’ the same value back, and if you ‘set’ a value twice you get the same behaviour as just setting it once, i.e., there is not ‘extra side effects’ going on with setting a variable. I codified this idea in a PR here: [Extending testing of set\_value and get\_value by dorchard · Pull Request #46 · csdms/bmi-tester · GitHub](https://github.com/csdms/bmi-tester/pull/46) I would be interested to hear if people agree that this should hold for all models.

This could be extended to work over `get-value-at-indices` and `set-value-at-indices` too if the overall idea makes sense.

I also made some other PRs around the way time works. Following a [discussion on the GitHub, pre this forum](https://github.com/orgs/csdms/discussions/26), I made a couple of PRs:

- [Allow non-zero start by dorchard · Pull Request #45 · csdms/bmi-tester · GitHub](https://github.com/csdms/bmi-tester/pull/45) simply removes the condition that the start needs to be 0.0
- [Allow inverse (negative timestep) or instantaneous (0 timestep) models by dorchard · Pull Request #49 · csdms/bmi-tester · GitHub](https://github.com/csdms/bmi-tester/pull/49) accounts for the possibility of negative timesteps and also 0.0 timesteps (what I’ve called here ‘instantaneous’ models, in which case I think it makes sense for the start and end times to be the same).

There are a few other potential properties I can think of as well. Is there appetite for extending the bmi-tester in general?

---

<div class="post-metadata">

**Author:** ![mdpiper](https://yyz2.discourse-cdn.com/flex012/user_avatar/forum.csdms.io/mdpiper/32/1_2.png) [@mdpiper](https://forum.csdms.io/u/mdpiper)\
**Post date:** [January 7, 2025, 3:49am UTC](https://forum.csdms.io/t/expanding-the-set-of-bmi-tester-properties/79/2 "2025-01-07T03:49:59Z")

</div>

I use the bmi-tester all the time, so anything we can do to enhance or extend it would be useful to me.

---

<div class="post-metadata">

**Author:** ![dorchard](https://yyz2.discourse-cdn.com/flex012/user_avatar/forum.csdms.io/dorchard/32/8_2.png) [@dorchard](https://forum.csdms.io/u/dorchard)\
**Post date:** [January 10, 2025, 2:34pm UTC](https://forum.csdms.io/t/expanding-the-set-of-bmi-tester-properties/79/3 "2025-01-10T14:34:41Z")

</div>

Great! Do you think checking the get-set properties then would be something useful to add (along the lines of my PR)?
