Lesson 9 of 11

Debugging Excursions

Duration: 51:29 Watch on YouTube (external link, opens in new tab)

Markdown version

In this lesson

In session seven a test fails on Raymond Lim's machine, and NCrunch coverage (external link, opens in new tab) markers show the almost surrounded code never runs. Conditional breakpoints and moving stones away from the edge point to a bug near the edges, so they add tests near the top and left edges. Replacing the fill board call with add stone calls shows the bug is in the DSL (external link, opens in new tab), whose X and Y swap was never committed, and they start a check below the stone for vertical pairs.

Transcript

5,452 words

[00:06] (external link, opens in new tab) Okay. We're back. We're back with session number seven, I think. And this time, a special treat just for you viewers. We have the special video face of Raymond Lim. Please welcome Raymond. Yay. How are you? >> I'm doing great. >> So, let me just explain the situation. In the previous episode, we had a massive fail in that we did some really weird newbie stuff and our DSL (external link, opens in new tab), our tests actually had bugs.

[00:40] (external link, opens in new tab) And in this session, Raymond has gotten the last version of the changes from git and we have another test that's failing, just one. And it probably has to do something with line ending. So, right now, Raymond is debugging to see what the hell the problem is cuz this test is passing on my local machine. So Raymond, any any progress yet so far?

[01:11] (external link, opens in new tab) >> not really. It looks like it's adding it's reading it correctly and it's adding it correctly. This one. >> So, what's the test that's failing right now? Is it the one on the right? >> Yes. >> Is it? That's the last one we worked on. >> Yeah. >> Passes on my machine. >> Surround opposite color stones. Remove opposite color stone. >> Well, it passed on your machine after we updated the the DSL method.

[01:42] (external link, opens in new tab) >> Yes. >> So, we didn't like verify if it actually passed or not. >> We didn't verify if it actually passed. >> Yeah. Because we didn't do the thing where we make sure it fails first and then pass afterwards. >> We were so tired. >> Yeah. >> But the test did pass. >> Yeah. The test looked like it passed. >> Actually, NCrunch told us that all the tests were passing. >> Yeah. >> On my machine.

[02:14] (external link, opens in new tab) And right now, oh by the way, did you I I noticed something about the previous video and that in the beginning we NCrunch actually told us that some code was not covered and that is marked with the black dots. I mean if you if you look at the right I see >> you'll see that the second assert never gets executed. >> Right. That's because it fails on the first. Right. >> Exactly. Okay. And when we went to the DSL method, I was wondering why it showed that some of the the loop wasn't working because of the split that didn't work.

[02:48] (external link, opens in new tab) And I if we had if we had listened to NCrunch more, we could have shown that there wasn't any coverage (external link, opens in new tab) that it wasn't splitting correctly. So I'm wondering if you run everything now, we'll see what the coverage is before you we continue debugging. Maybe we'll have a better understanding. >> Okay. Just just debug to the end and see what happens. >> Oh. Oh, I already exited. Do you want to just run it with end cover? >> No, no, no. Just run it as usual and NCrunch will already let us know what's going on.

[03:21] (external link, opens in new tab) >> Yes, the one failed right here. >> No, just run all of them. >> Yeah, I did. Run test, right? >> Yeah. And how many? Oh, I guess two videos. Okay. Maybe put it right here. Right here. No, right here. I'll have to find a good spot. Okay, here. Okay. So, this is the one that failed.

[03:53] (external link, opens in new tab) Double click here. What happens? Okay. So, we can see the second assert never gets executed. Mhm. >> if we go to fill board, it does run. It just fails. So, it's not like it's not covered, right? >> You say, "What do you mean it's not covered?" >> I mean, it is covered because it's red.

[04:23] (external link, opens in new tab) It's not black. >> If it was not covered, then it would be black here. Like last time when I saw it >> on my machine, >> this line was like red or green or something, but all the lines in the for loop were actually black >> on the on the dots, >> which means it never got got executed. >> Okay. >> But here I don't see anything like that. >> so I I thought maybe if we had looked at it this way, we would find out.

[04:55] (external link, opens in new tab) So what does the test say? Actually, let's let's figure it out. Expected empty but was filled. Position status is empty and status one. So basically what we said is that if you fill out the two black cells and surround them correctly, they should be emptied out, right?

[05:28] (external link, opens in new tab) Should probably should be two three. We're checking status of same one. >> Oh yeah, that we had that as well, but we never checked the we never checked the second one. >> Yeah. Anyways, yeah, so right now it's supposed to be empty but still filled. And if you set a break point right here, >> you run a test.

[06:13] (external link, opens in new tab) >> I think we should just put a breakpoint on rules notify stone added and see when that that that that clears up the board. >> Right. I just wanted to show you that the the board matches what we expected right now. So, >> well, I can see a filled position right there. >> Right. It might be easier with from here. So, one, two, one, three, and then two, one, two, three, four,

[06:44] (external link, opens in new tab) And then three, two, three, three. All right. So that's for the fill positions. And then for the one, two, one, three is white. And then you got a white, black, black, white. And you got white, white. So it is filling it properly. So we could re we should probably rerun the test. And you say remove stone is surrounded, right? Breakpoint. >> Okay. So let's rerun the test.

[07:37] (external link, opens in new tab) Okay, so this is checking 30. Why is it checking three 0? should be checking three 0 anyways, but we're not looking at 30 >> because it's always checking the ones around something that was added as well, >> right? So, this one's checking 32. So, this is when it's which one is adding should we do continue?

[08:09] (external link, opens in new tab) F5. We should wait until >> I'm kind of lost actually, so I'm not sure. Right. I was thinking about waiting until we add stone for this one. Two, three. >> Actually, you know what? Let me see if I can run the same all the tests on my machine again. You didn't change anything, right? >> I didn't change anything. Yeah. >> Okay. So, I'm just letting Visual Studio load on my machine for a second.

[08:41] (external link, opens in new tab) And we'll see what happens if I run the tests. Do not recover. Okay, hold on. I'm going to miss the weather in Israel when I'm in Norway a bit.

[09:12] (external link, opens in new tab) I can't say I'm going to miss all the sweat. >> Okay. Let's see if we can run all the tests. Just just run all the tests, right? Run tests. Well, surprise surprise. one is failing on my machine as well. >> Okay, so there's nothing wrong with my machine. So sometimes NCrunch doesn't get it all all right.

[09:42] (external link, opens in new tab) Okay, >> interesting. So we didn't finish the job. >> Yep. >> What the hell? >> We were tired. >> Yeah, I guess. So >> Okay. Oh, according to So, we're working on this stuff right here. >> Yeah. I'm going to do one small thing and I'm going to increase the font size for a little bit.

[10:14] (external link, opens in new tab) >> Okay. >> Let's see if that works. Nope. Can you press control scroll just to do like 10% bigger the font? >> Control scroll. >> Yeah. I mean, >> control and scroll with the mouse. >> Okay. >> Yeah, I think that's better. >> Okay, >> cool. >> Anyway, back to our problem.

[10:46] (external link, opens in new tab) So, I guess we're just continuing the debugging session from last time. That sucks. >> I was thinking we might be actually be productive at some point. So this is our logic in test continuing to screw with us actually. What do you think? >> No, I think this is >> Hold on. Have you noticed that the the the there's all the black stuff that never gets executed? >> It should say almost surrounded.

[11:25] (external link, opens in new tab) >> Okay. That was a treat that will not repeat. Yes. For the view, you'll see it later. You can't see the video right now. Anyway, so if you notice it, it it says almost surrounded is actually false. Can you see that? >> Right. >> I mean, do you see the black dots, >> right? I think it's for for the X for the XY 43. >> Yeah. But the point is it never for any stone gets the almost around it >> otherwise it would have been covered.

[11:57] (external link, opens in new tab) Right. >> Right. >> So that's interesting. >> I mean if we can you just continue back. Let's see if it does get covered at some point. >> what did I just do? >> I think you exited debugging. >> Oh that's good. That's what I wanted to do. >> Okay. >> I was wondering if that that would work. Shift F5. >> so remove stony surround. Now you can see that the coverage

[12:29] (external link, opens in new tab) Actually never get here. >> Why did some point and cover NCrunch tell me that everything was good. What the hell? What did I miss? So it says almost surrounded is actually always false. So that's the bug. >> Yeah. >> So last time we went to almost fully surrounded and we did a like a hardcoded thing.

[13:05] (external link, opens in new tab) >> We checked basically the stone to the right. Agreed. >> All right. surrounded on right board minus edge or board gets stone color of X + one and the same Y equals the current stone color

[13:47] (external link, opens in new tab) So I want to dive into when the ad stone reaches >> I think we should put a break point there in the in the almost fully surrounded on the right. >> almost >> just on that line that that checks hardcoded to the right. >> Okay, >> let's see what happens. >> Well, this one true. >> This one we actually put the break point here. Condition. I don't never really used this before. Is it x= 3

[14:17] (external link, opens in new tab) X = 2 >> equals equals >> equals = 2 2 and y = 2. Oops. >> So I I don't remember the syntax, but that could be it. >> That should be it, right? All right. So then if I take this out, should run it like this.

[14:52] (external link, opens in new tab) Maybe take this out for now. All right, there we go. And then we can just step down. It's a two two surround color stone is white surround. And if we walk down Oh, what just happened? Let's get

[15:29] (external link, opens in new tab) >> Okay. Oh, so >> right now it's empty. So maybe I need to run F5 again. I think it's still empty. Shoot. >> I think we're not running the correct test. Are you sure you this test? >> Oh, you might be right. I think I might have started running from the first test. All right, let me start over.

[16:16] (external link, opens in new tab) All right, there a way for me to figure out what board is right now. if it's checking an empty cell or not. I'll just do it can just check it on the next if. Right. We're going to if you just step into the next statement, you're going to know if it's empty or not, >> right?

[16:47] (external link, opens in new tab) Just still empty. Why is it empty on two and two? >> Because the first time you put it in, you check it put it right. The first time it checks it is when you enter W right here. And the next time it checks it is when you enter W right here. >> Okay. >> So now now this time is probably when it's right here. >> Okay. So if I if I do

[17:18] (external link, opens in new tab) Yeah so on left surrounded on right is false. >> Yeah because we haven't added a second black stone I guess. >> Yeah it would be nice to know why. I guess I guess we should go down the stack, >> right? >> and say, "Oh, we don't we we don't need to be here. We need to be one above >> two three." So >> you need to break here when the stone we're adding is the last one on 33,

[17:53] (external link, opens in new tab) >> I guess. Right. >> Which one is Yeah, I think the 33 gets added last here. >> Right. Okay. So, we should just run F5 again. No, I think we should put a like a break point >> right here. >> Only stops when X and Y are three and three.

[18:28] (external link, opens in new tab) >> Was it this? >> I think now you can dis disable all the other way points. >> All right. Oh, this one's 33 right now. So, add stone 33. Notify stone added. It fills it up. Let's check the current stone matrix. So, >> that shouldn't be a problem. We have tests for that. >> Okay. >> The problem is the is the next one. >> All right. >> So, you should check

[18:59] (external link, opens in new tab) It would be the one above. So y minus one. This should be this one. So this one's the one we look at. >> So for each zone, >> for each stone, we're checking if it's fully surrounded. Isn't that weird? Now maybe we don't need to do that anymore. >> For each position around the stone, I'm not sure. >> I think we still need it for now. I don't know what's the other alternative we have. >> Yeah, I can't that's just optimization for now.

[19:31] (external link, opens in new tab) Okay, so now we've just added three and three. Now we're checking the one just above it, right? >> Oh, I think I think I I understand what's the issue. It's we should be the left one. Right now we're checking this one. It should we should be checking that the left is the same stone, not the right is the same stone for our hard-coded one. >> So we should check. when we get into >> Yeah, but hold on. We will be checking the last one at some point, >> right?

[20:01] (external link, opens in new tab) But right now, the one that causes it to be missing. >> Oh, because it's almost fully surrounded, >> right? So if if we go inside here and we go surround on left is true. Oh, surround on left is true. >> So that's that's bad. >> Wait, two three two. Am I doing am I understanding something wrong?

[20:31] (external link, opens in new tab) Three and then two. So I think it's removing that because it thinks it's surrounded by on all sides. No. >> Wait, is it surround on right is false? >> Well, this is almost fully surrounded. This is not just the one we're looking at. Is the symptom is that this one will be empty at some point and then the other one won't work.

[21:11] (external link, opens in new tab) I think I I think right now the problem is that it is thinking this is white. I mean we think we think it as looking at this one but actually looking at this one. So this is thinking this. >> Why do you think it's that one? >> Because it says surrounding color is black. So that means it has to be a white stone that we're looking at. Right? If I go back to the call stack.

[21:50] (external link, opens in new tab) >> Well, what's the >> Well, what's the current color? >> That's what I'm trying to figure out. >> What's the color in XY? X and Y are three and two. Okay. Yeah. So if I

[22:22] (external link, opens in new tab) >> you're in board just say get stone color I think. >> No it it it says that I don't have a reference. It must. So if I can do like opposite of it, it's black. So it should be white. The color we're looking at is white. >> That's assuming that this method is actually working. >> Yeah. >> If we say just get stone. If we say this.

[22:54] (external link, opens in new tab) >> All right. We have stone color matrix, right? We have access to stone color matrix. Oh, this time. Okay. Yeah. So our current color at three and two is white. That makes sense. Is get stone color. Maybe we get the X and Y reversed as well. >> Maybe something's reversed. So the the filling the board, right? So maybe get maybe get stone color.

[23:25] (external link, opens in new tab) You're right. is reversed. Okay, so we're always saying X and Y. We're always saying add stone X and Y stone color matrix and Y equals stone color.

[23:56] (external link, opens in new tab) So, this is >> Yeah, sorry. >> You want to open it up? I want to open it up. I want to see what's going on in this bad boy. It's one, two, right? One, three. >> We should have two and one as well. White >> two, one, two, two, two, three, two, four, two, two, three. We won't know because they're exactly symmetrical.

[24:28] (external link, opens in new tab) What if we just add another white to one of the rows so we'll know exactly which one it's supposed to be in the DSL. Like if we go here, >> we have I mean three 32 here is the same as 32 here. We have >> no way to know if it's reversed. >> Or we can just like offset it. like put this. >> Yeah, but what if we just did the This wouldn't be symmetrical if we just did that.

[25:06] (external link, opens in new tab) >> I think you get outside the buggy. >> Yeah, >> no, I meant I meant like maybe it might be better if we just move everything to like a different number. So one so then the X and Y X side would be between four and seven. Y would be between one and three. Now all the tests are passing. >> Oh, this one is because this is this is incorrect. This should be 52 and this should be six

[25:37] (external link, opens in new tab) Six. Oh, now it's passing. What the Hey, what the what the >> Oh god. Okay. >> All right. >> Okay. >> I don't I don't trust (external link, opens in new tab) this test to be honest. >> well, I think we're just seeing a symptom that

[26:09] (external link, opens in new tab) We might have a bug when we're really close to the edges. >> Yeah. I'm I'm going to run all tests. Okay. >> But obviously >> we found a bug. >> There is some sort of bug here. >> Would you agree? >> Yeah, I agree. >> Oh man, I choose. Okay. So, we have to recreate it. We can't just back away from it and assume everything's good, dude. We have to stand by our principles

[26:42] (external link, opens in new tab) And do this thing like real men and women. >> Okay. Stones near edge. Okay. >> Okay. >> So now let's see delete. So, at what point does it be begin to be? >> You need you need to change this stuff too. Right here though, too. This would be

[27:13] (external link, opens in new tab) Four and five.

[27:50] (external link, opens in new tab) Cool. So, we do have So, here's our bug near the edge. >> Hello, bug. Nice to meet you again. Why do we think this is happening again? But, but at least we know that this only happens when we're near an edge. What if we move it to the bottom edge? I mean, one row down instead of one row left. >> All right, >> let's see what happens.

[28:30] (external link, opens in new tab) And then we need to move this to three. >> Okay. >> Okay. What if we move it now to the right? I want to see if this is a problem with the left edge or the top edge or both of them. And the assert

[29:06] (external link, opens in new tab) >> Okay. So now we know that it has to do with any of the edges. >> Okay. >> Do you agree? >> I agree. So, let's duplicate this test so that we have one on the left edge and one on the Actually, what it tells us is that if we're not on the top edge, something's wrong. Am I right? >> we can try. >> Hold on. Hold on. What I'm saying is that

[29:36] (external link, opens in new tab) The problem here if we move it one line I mean you can just delete the line with number one like this >> I think the test would pass because when we do the assert like this

[30:16] (external link, opens in new tab) >> Okay. So, what I'm trying to say is is that we have two conditions that cause this to fail. the color not near not near top edge

[30:49] (external link, opens in new tab) And this is near edge near left edge. And this one should be Yeah, this is the near left edge.

[31:21] (external link, opens in new tab) Two and three. So now we should have two failing tests. These are two different or maybe caused by the same bug. >> Mhm. >> Okay. >> Okay. Because we do have situations where when we have two when we do have a test for two opposite color stones that does pass. >> Would you agree? >> We do. >> Okay. >> I remember us having one >> two opposite color stones. >> Yeah. This is where the really helps.

[31:52] (external link, opens in new tab) >> Not near top. Remove opposite this one, I guess. >> Oh, this one, right? So, >> this is when it's passing. >> Mhm. Okay. Do you notice how the naming really helps now? >> Okay. So, now we can choose to what if we can just simplify this? Is there a simp way to simplify the test even more?

[32:25] (external link, opens in new tab) Which one do we choose to debug? We Well, we debugged the f we just debug Well, we didn't debug any of these because this one was moved up to the top. So, maybe this one we just debugged. >> You want to debug this one? >> Yeah. >> Okay. >> So, should we comment out this one? The top one or >> do you want you want to comment this one out? >> Sure. Actually, >> just leave it for now. Okay. >> Okay. What's the conditional statement adding

[33:00] (external link, opens in new tab) Four 43 right or 34? Okay. >> no, that's not the X. >> Ah, I had the wrong one.

[33:32] (external link, opens in new tab) Oh, this is Oh, there you go. Okay. Should be three, four. All right. >> And then where are we? Wait, why didn't you step into check stone or round position? >> Oh, I forgot. My bad. Let's start with >> Oh, you know what? Let's see now the status of the current board. >> Oh, I I misunderstood.

[34:04] (external link, opens in new tab) All right. >> Okay, never mind. So, let's debug again. >> Yeah. right. So, we want to check the one on top and then off the color is white. So, we're checking the

[34:36] (external link, opens in new tab) The correct stone. Guessing we do fully surrounded should be false. Okay. Almost surrounded. surrounded on left. So this one's the the one where surrounded on left should be false. That's true. Wait, >> which one are we checking?

[35:06] (external link, opens in new tab) We're checking three and three. >> Yeah, three >> is >> black. So it should say surrounding on left. So that's why I'm saying Oh, so it it returns true and it actually has a bug, right? >> Yeah. Well, it's saying that surrounded. They're saying that this one is is white. >> You can just press shift F9 on that. By the way, >> shift F9.

[35:36] (external link, opens in new tab) >> Selection. Yeah. >> I see. Yeah. Saying it's white, but it's supposed to be black. Oh, my screen isn't too happy. So, X is three. So, two and three should be black according to our board, right?

[36:06] (external link, opens in new tab) >> Mhm. >> Interesting. What's all this ghosting? Yeah, I don't know what's up with this ghosting. >> Okay, now it's better. >> so okay, so at least we we have something weird that's happening that we can zero in on. Right. >> Right. >> So why if we look at the positions on the board right now, what do they say?

[36:41] (external link, opens in new tab) >> So maybe we should go down to call stack right now in the board.cs. CS check the position or the stone color. So two two three is white and 3 one. Oh >> is this >> X is two and Y is three. X is two. Y is three.

[37:29] (external link, opens in new tab) >> Oh man. >> Okay. So I have a suggestion. Let's simplify this. Let's see. if the bug is in the DSL or not. Let's add >> it is it is in it's the way we writing it. I just realized that >> it's supposed to be it's supposed to be like it's supposed to be white white black white black white. But I thought we fixed this last time. I don't get I thought we because like this is X. This is Y.

[38:00] (external link, opens in new tab) So this must be actually no. Never mind. I'm confusing myself again. >> Okay. So, so let's simplify. Let's replace the fillboard call here with actual calls to add stone just like we did before we had the DSL. Let's see if the problem is with the DSL or not. Okay. Let's get rid of that parameter. >> All right. >> What I would say is can you stop debugging?

[38:30] (external link, opens in new tab) >> Yeah. Okay. So, what I'm saying is this one. Now, we're just going to add it on our own board. Add stone. We need white at two and two. Agreed.

[39:00] (external link, opens in new tab) >> Yes. Yes. >> Three and two. >> Yes. >> And one and three. >> Yeah.

[39:32] (external link, opens in new tab) >> Four and three. Yeah. Yeah. >> And so now let's add the black which is two and three. >> Mhm. Then we should have back to white. Three and four.

[40:05] (external link, opens in new tab) And lastly, but not >> we wanted to do three three four last, right? Wait, why you doing? No, you >> now we need four. Four. >> Okay. >> Did I get it right? >> Three, four, four. Four. You mean two You mean two four and three four, right? >> No, these are the bottom ones, >> right? So, two four and then three.

[40:42] (external link, opens in new tab) >> Oh, yeah. Two, four. So, I added the Okay. Two away. Now one is failing instead of two. >> Yeah. I Yeah. >> it's still our DSL that's a problem. Damn it. >> Did we Did we switch to axis? I thought we switched to axis. >> Yeah, we did switch. >> But obviously we didn't fix everything.

[41:15] (external link, opens in new tab) >> Was our initial switching to axis wrong? >> Damn it. Actually, I if I remember correctly, switching axes didn't do anything because we were trying to figure out the problem. >> Yeah, we did fix it. I remember us fixing it. >> Do you want to try it again? >> I feel like we were so right. >> Oh, we didn't. It's supposed to be We didn't I remember we switched the J and the I.

[41:46] (external link, opens in new tab) We didn't switch it. just >> Oh, that's >> your change didn't include include that, I guess. >> Damn it. >> So, what? I didn't commit the last change. >> No, I I I thought you included it. >> I did. >> What should I do now? >> Should I just go kill myself? What should I do? Just tell me.

[42:18] (external link, opens in new tab) This is >> okay. This is so what why don't we go like this? >> It's totally mind mindb blowing right now. >> That's why kids you shouldn't have any logic in your tests. >> Okay, everything's passing now. Sweet. Okay. Can you please commit that? >> All right. I'll commit this right now.

[43:00] (external link, opens in new tab) How is switch access for fillboard? field for some >> just amateurs. We're amateurs. The world knows that now. >> I I swear that I saw us fix it though. >> I I've I've seen many broken promises and swears software. >> We got to All right. Now we can continue. >> Jesus.

[43:31] (external link, opens in new tab) Okay. So now can we can we go ahead and say it's wrong for us to have the a hard-coded check just on the right because that's what we did so far, right? We always check to the right of the current >> Yeah. position. >> So what we can do next is we can set up the board like this. Don't change existing tests, dude.

[44:02] (external link, opens in new tab) >> All right. All right. I'll make a copy. All right. >> Control D. Right. >> Mhm. >> All right. how should we do this? Opposite color. Just name it number two. >> No, that's not the difference. else >> the simplest proof that we are doing the wrong thing.

[44:38] (external link, opens in new tab) >> I'm just going to make things a little more readable. Maybe like this. Sure. Okay. Well, the simplest I was going to have it was like like that. And then board add stone at 24.

[45:09] (external link, opens in new tab) >> don't forget to to name the the color. >> That's first one. All right. And then the should be same 2 three and three three. Oh, it turns green. >> Mhm. I don't think that's a problem. I think that we we just need to basically create a board

[45:40] (external link, opens in new tab) Where we have black and black like this of course it's not going to work. Come on. I'm just trying to move the mouse. The the the character one. Thank you. >> Like this. We don't need that one anymore.

[46:17] (external link, opens in new tab) >> Okay. >> See what I mean? >> Yeah. So this should we should be getting two empties on position two and three and >> two four >> two four. >> Cool. >> Okay. Because we just checked to the right. So surround opposite color stones

[46:49] (external link, opens in new tab) Vertical. Okay. >> Okay. >> So just to make it maybe a bit clearer. >> What's the simplest way (external link, opens in new tab) to to pro to make everything pass? So, I was wondering about how we were going to do that, especially when we had the is almost surrounded hardcoded with the right side.

[47:21] (external link, opens in new tab) So, I'm I'm not really sure where you were going with the is is almost surrounded, almost fully surrounded. so I was going with the simplest solution >> and just ch saying, well, it's fully it's almost fully surrounded. >> and then just add a check to the to the bottom. >> That's what I was thinking.

[47:52] (external link, opens in new tab) Just hang until you make it. So it would be on the bottom just like we checked on the right. So I think the the simplest solution then would just to like count to like

[48:25] (external link, opens in new tab) Increment and check check till three and then this is basically what we're doing right we're only checking that it's three starting on three sides. >> Yes. >> So I think >> no but it's not just surrounded on two sides. It's surrounded on the fourth side with the same color.

[49:07] (external link, opens in new tab) >> now of course. Oh, now we broke four. That's great. >> How about we go back? >> Yeah. I'm just >> how we go back one test like instead of doing vertical and I break yeah I try to write another test to break the other test. So I want to go I want to like comment this test out for a bit. >> Yeah but we have to undo my changes first. >> Okay sure you do that.

[49:41] (external link, opens in new tab) >> so like this. Okay, now we can go back to commenting the test. Why do you want to comment it out? What what are you trying to do? >> Because there's a very there's a incorrect assumption that's bothering me a lot. So I think if I take this test, control D. I just want to verify maybe maybe I could be wrong. Let's call this something else. Just say two for now. You can double click on the on the pane tab so we can see more of the code as you write it.

[50:14] (external link, opens in new tab) And then double click. >> I see. So if I if I just have it like this and I just check position status 3 23 by itself. So this supposed to be filled still. Yeah. >> So this so this supposed to be Phil.

[50:44] (external link, opens in new tab) >> But why don't you make it just one difference from the other test, not two. You made it two characters different. You can just remove one character and it will still fail. >> >> you remove two whites. Remove just one white. >> Okay. Which white do we want to keep? All right. Yeah. >> Why is it not? >> It's building. Oh, it's not building.

[51:15] (external link, opens in new tab) >> Yeah, because position status should be filled, but it's not. It's F. >> Oh, how did that How did that happen? All right. Oh.