From 213e17fc33a1cea1e3de91fe142c5133c7cad3dc Mon Sep 17 00:00:00 2001 From: Fatima Agnes Date: Fri, 28 Nov 2025 21:51:49 +0200 Subject: [PATCH] adding bracket validator and test file --- .vscode/settings.json | 11 ++++++ __pycache__/bracket_validator.cpython-311.pyc | Bin 0 -> 762 bytes .../test_bracket_validator.cpython-311.pyc | Bin 0 -> 3033 bytes bracket_validator.py | 24 +++++++++++++ test_bracket_validator.py | 32 ++++++++++++++++++ 5 files changed, 67 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 __pycache__/bracket_validator.cpython-311.pyc create mode 100644 __pycache__/test_bracket_validator.cpython-311.pyc create mode 100644 bracket_validator.py create mode 100644 test_bracket_validator.py diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..184c4eb --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,11 @@ +{ + "python.testing.unittestArgs": [ + "-v", + "-s", + ".", + "-p", + "test_*.py" + ], + "python.testing.pytestEnabled": false, + "python.testing.unittestEnabled": true +} \ No newline at end of file diff --git a/__pycache__/bracket_validator.cpython-311.pyc b/__pycache__/bracket_validator.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d3919d5db427962903ac93769ff46d194b03454c GIT binary patch literal 762 zcmZWl&ubG=5T3U`^26*lS(CO3O$cZqd#JRBfQpC*6{V$@;>9L}HE&Hrx7lTPQ)s&j zId~{iu(x{fP(@p$7ccsEtkT1>r-J{$LN2m+a5hasCBwXr`DW&uH}9Q_;x$0~{#R~4 zVgP=}WMpI*^aTu#fWjMi36!jX%rr-}xP`;R;_3fDID!_qgc6sbjLTA%a+Ifu53I{M z@EGdPT;AawW*f{Iha6-7q&fTvPCpypK;U2wH7sf>4zXAQG`R+-9(P=waf0M*oNyCP z!r>hL<~Xw%Zwlsc%E5Do2!Jn2t?sgw^}StIuDcPbL}Wc8domjlIU@ClxKCv!NGOJ( zc4)vFx*;b6q1`dMcEhsGcBd8amaQ~5gPe{n$Q!Rrq^fNNxu&LD|79}6T4PHw00gAQeMM z^OvyC`I)SjzvX3O_XX+Q%G;Iqg`Yy{Tqt=1_eIH@p7+Gq{rrs(h*-oc4!eili}L(w z`cwL2=5xjqihj0yy!?$jzg_*6t$Nw&u<6f5wy=K>_v+)KuquR-VuAT_TeM5zZ` dI_+xeLvse{;8i6ILY5E`GP7hlgh?3a{{f3S!?FMX literal 0 HcmV?d00001 diff --git a/__pycache__/test_bracket_validator.cpython-311.pyc b/__pycache__/test_bracket_validator.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ce449b756d54165e71055401904bf2ac19cf478c GIT binary patch literal 3033 zcmdT`&u`mQ9Dn|i^fhfMLEB{0feM2v9;A(vZt5o3VIV-0$PODwq^&I1b{8|pDbEh5 zE|G%N1L6S3a^zH2^$+11SDvVR<-{$hoTeT4J|}jYA8jWzp<%y#@?O3_{Jx*>_kEpT zr=~IpuHT+Y=7&5&f6zsIrFxSi8zwtQM>=Dn3jJm+rp8nl2C?X4q;uOy=MD5F8yoI& z2<^kCdsR4t*HaH8Dao=3G-JQEFv?JhvFMDiG^4R57kKJnSv0+Aa9D}&`Ny8vCs68g+9m868Xgsq|-q&ufdx>dMBZTdmu9t*Tm!h(+r0WP$0;ophC5XKQWM_Q6JSR|?c5f(2_>Z7!A zWslD-uS#BeYdI&aHpv+5k&FX$^F$_K8fH(>XhTj6-J3g)?yer~56&%sKECICK@J4j z$Hf2_+qigw@0>4`0-@yN#Q-n1<3Xmt#b{FRfaLj*8WF;ly$Ln9wydpg=}pNP&Bx3M zKE5&Cs#15W22r4RiQ^T{V`k9eC5YhY${M)~vb%#dh^{N(Xhb;MTbvlleOq4zTc8y!z;x zFUo<~S8}Hdp(J7a@3@AOEJ6FtHOYlh-=2zejR2Y9|6kN+}K=wxf!tXwS3>c;x$pf5!=QMav4#je}&yVmjE zIlUT&lrPg_dxZk+(q$PmhD1kJaDp6?H3; zLBpYRMbSOM?{!(aMdsi)`scxM06HAQFo$Tm72Stuq1`_^yvRUk!|?M`F!SzTRPgt) l^g7}vzxNI}vCWBxe75z;_NU+7-M-t3?hc3eS3wYM>K~(mfZPB8 literal 0 HcmV?d00001 diff --git a/bracket_validator.py b/bracket_validator.py new file mode 100644 index 0000000..2863396 --- /dev/null +++ b/bracket_validator.py @@ -0,0 +1,24 @@ +def bracket_validator(input_string): + stack = [] + opening_brackets = "([{" + closing_brackets = ")]}" + + + bracket_map = { + ')': '(', + ']': '[', + '}': '{' + } + + for char in input_string: + if char in opening_brackets: + stack.append(char) + elif char in closing_brackets: + if not stack: + return False + + last_open_bracket = stack.pop() + if last_open_bracket != bracket_map[char]: + return False + + return not stack diff --git a/test_bracket_validator.py b/test_bracket_validator.py new file mode 100644 index 0000000..a3c320b --- /dev/null +++ b/test_bracket_validator.py @@ -0,0 +1,32 @@ +import unittest +from bracket_validator import bracket_validator + +class TestBracketValidator(unittest.TestCase): + def test_valid_basic(self): + self.assertTrue(bracket_validator("()")) + self.assertTrue(bracket_validator("[]")) + self.assertTrue(bracket_validator("{}")) + + def test_valid_nested(self): + self.assertTrue(bracket_validator("([])")) + self.assertTrue(bracket_validator("{[()]}")) + + def test_valid_with_other_chars(self): + self.assertTrue(bracket_validator("a(b[c]{d})e")) + + def test_invalid_unclosed(self): + self.assertFalse(bracket_validator("(()")) + self.assertFalse(bracket_validator("{[(")) + + def test_invalid_mismatched_pair(self): + self.assertFalse(bracket_validator("([)]")) + self.assertFalse(bracket_validator("(}")) + + def test_empty_string(self): + self.assertTrue(bracket_validator("")) + + def test_only_non_brackets(self): + self.assertTrue(bracket_validator("abc 123 def")) + +if __name__ == '__main__': + unittest.main()