 In language testing. So, so I will first introduce myself. So this is Aniket from Remix team. And regarding the in language testing, we basically remix provide a module for this purpose that is named Remix test. So with Remix test, you can use the solidarity to write the unit test for the solidarity contact itself. So basically Remix test is a core of remix ID, solidarity unit testing plugin. So I will quickly demonstrate this plugin and so that we can understand this. It's working. So I'm sharing my screen here. I think I'm visible now. Francis, can you confirm that my screen is shared? Yes, it is. So this solidarity unit testing plugin comes with the solidarity environment. So you can just quickly select this environment and get this double checkbox here in the side panel. So this is the solidarity unit testing plugin. So as it says, you can test your smart contact in solidarity and to get started, you should just select a file, a solidarity file from the file explorer and click on the generate to generate a test file. So let's quickly do it. So I am selecting a very basic story.sol file. And so now you will see that this generate button is now enabled. So it also says generate sample test file. Now if I will click on this, so a new test file will be generated in the same folder where the file to be tested is. And I will quickly talk about this file. So you will see that we are importing this remix underscore tests dot solve. And here in the comments, it is mentioned very well. That this import is automatically injected by remix. So this is the, the library, which is responsible to perform the assert accents, which are used below in this file. So with the remix test, your test files should have this suffix that underscore test dot solve using which we detect that this is a test file. And also yes, I like an usual a solidity file this file can also contain contain more than one test suit. So, like a testing framework, remix tests also provide some special functions that are before each before all after each and after all. So as their names are before each, any code inside before each will be executed before each before running each test. And any code inside before all function will be running before all the tests and similar for the after each and after all. So there are some initial tests here. So we use this assert library here. And regarding this assert library if you want to see that what all things are available with this library, you can go to the documentation here and there is one dedicated section for this assert library. So we have these methods available currently. And then, then here are some methods to run the kits. So they are basic, they are very basic ones. So we are just comparing the integers with them and using more methods. And there is another way if you are not if you're not looking to use any assert library. So you can also use this returns property in which you can use the return value to test the contract. And then at the end there is one failure test. So if I will quickly run this file. So here, there will be all a test file loaded here. You can select a file here to run the test and I will quickly run it here. So this progress bar shows the progress of the file test. And here you will see the results of it for a passing test. It will be in the green and for the failing ones, it will be in red and also will be showing the regions of failure, which you will mention here in the, in this slide. In this equal test. And this test overall will show a fail if at least one contact test for this file is failed. So here you can see the total time that was consumed to run these tests. So I would like to also explain this before each and before all functions functionality. So this can be understood using this existing ballot test file. So we have this ballot contract. I think people using the solidity should be very familiar to it. So regarding that we have tests in this file. So you can use this before all to create an instance of ballot contract in before running any test. So you can just create an array of names and you can instantiate that ballot contract here and then you can further use that of that instance to run multiple tests on the methods. So for. Okay, so I will quickly also like to summarize that if you want to provide the compiler configuration for running this test file. So we use the solidity compiler plugin for that. So while then compiling this test file, we will pick the compiler version from this tab. This even version from here and also you can enable or disable optimization here for the long contract. And for the custom transaction context if we talk about that we can configure the transaction for a custom message or sender or message or value. So we basically provide that and will functionality here I would like to quickly run a test. So we use a solidity NAT spec for that. So there is a fixed syntax for that. So you can just mention this sender with a hash and a colon and a space like this in your before just before a method in which you want to set the sender. So to use this account functionality you need to import one more file that is remix accounts. That's all. So this account this library provides the accounts to set as a sender and there are currently 10 accounts available. So they move from zero to nine so you can provide the index zero to nine here. And if I can quickly check it here. We can directly check the message of sender here. And the method to access these accounts is this. So we can use here. Sender. Okay. So I can remove these things from here. And now if we will run this contract again. So this will be passing this is our check custom config. So this ensures that this the message of sender which is getting passed inside this method is the account nine. So this can be used in many context another which another custom configuration which remixes provide is for the value which is very useful in the table methods. So you can define a value using the similar syntax here. So this is a value in V, which will be passed in this, along with this method execution. So I can just quickly write one more test here. And you can just looking at timing it would be good if we could wrap it up. Yeah, because we have other. Yes, we are we are done in just one minute. So this is another way of master dot value. So we can provide the custom transaction configuration that like that. And remixes can also be used as a CLI and CLI module. So that is well explained in the documentation part.