<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mock Test &#8211; Govt Job Exams</title>
	<atom:link href="https://govtjobexams.com/category/mock-test/feed/" rel="self" type="application/rss+xml" />
	<link>https://govtjobexams.com</link>
	<description>পশ্চিমবঙ্গ ও সর্বভারতীয় সরকারি চাকরির খবর এবং সরকারি প্রকল্পের আপডেট</description>
	<lastBuildDate>Sun, 19 Jul 2026 04:46:22 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://govtjobexams.com/wp-content/uploads/2026/06/cropped-ChatGPT-Image-May-14-2026-08_04_15-PM-1-32x32.png</url>
	<title>Mock Test &#8211; Govt Job Exams</title>
	<link>https://govtjobexams.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Free Indian Constitution Mock Test – Online Indian Constitution MCQ in Bengali</title>
		<link>https://govtjobexams.com/free-indian-constitution-mock-test/</link>
					<comments>https://govtjobexams.com/free-indian-constitution-mock-test/#respond</comments>
		
		<dc:creator><![CDATA[Deba]]></dc:creator>
		<pubDate>Sun, 05 Jul 2026 10:31:07 +0000</pubDate>
				<category><![CDATA[Mock Test]]></category>
		<guid isPermaLink="false">https://govtjobexams.com/?p=579</guid>

					<description><![CDATA[ভারতীয় সংবিধান (Indian Constitution) থেকে গুরুত্বপূর্ণ প্রশ্ন প্রায় সব ধরনের সরকারি চাকরির পরীক্ষায় যেমন WB Police, Kolkata Police, RRB Group D, RRB NTPC, SSC, WBCS, WBPSC, ICDS, Gram Panchayat এবং অন্যান্য প্রতিযোগিতামূলক পরীক্ষায় নিয়মিত আসে। তাই পরীক্ষার প্রস্তুতিকে আরও শক্তিশালী করতে এখানে ভারতীয় সংবিধানের গুরুত্বপূর্ণ ২৫টি MCQ নিয়ে একটি ফ্রি অনলাইন মক টেস্ট দেওয়া হয়েছে। [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ভারতীয় সংবিধান (Indian Constitution) থেকে গুরুত্বপূর্ণ প্রশ্ন প্রায় সব ধরনের সরকারি চাকরির পরীক্ষায় যেমন <strong>WB Police, Kolkata Police, RRB Group D, RRB NTPC, SSC, WBCS, WBPSC, ICDS, Gram Panchayat</strong> এবং অন্যান্য প্রতিযোগিতামূলক পরীক্ষায় নিয়মিত আসে। তাই পরীক্ষার প্রস্তুতিকে আরও শক্তিশালী করতে এখানে <strong>ভারতীয় সংবিধানের গুরুত্বপূর্ণ ২৫টি MCQ</strong> নিয়ে একটি <strong>ফ্রি অনলাইন মক টেস্ট</strong> দেওয়া হয়েছে।</p>



<p class="wp-block-paragraph">প্রতিটি প্রশ্ন সর্বশেষ পরীক্ষার ধরণ অনুযায়ী তৈরি করা হয়েছে। মক টেস্টটি সম্পূর্ণ করার পর আপনি নিজের <strong>স্কোর, সঠিক ও ভুল উত্তরের বিশ্লেষণ</strong> দেখতে পারবেন। নিয়মিত এই ধরনের মক টেস্ট অনুশীলন করলে পরীক্ষায় ভালো নম্বর পাওয়ার সম্ভাবনা অনেকটাই বেড়ে যাবে।</p>


    <div id="gje_mock_675320_1785805271" class="gje-mock-wrap"
         data-src="https://cdn.jsdelivr.net/gh/GovtJobExams/mock-test-constitutions/MockIC1.js"
         data-negative="0.25"
         data-per-question="30">

        <div class="gje-start-screen">
            <h2>ভারতীয় সংবিধান Mock Test 1</h2>
            <p class="gje-info-line">প্রতি প্রশ্নের সময়: <b>30 সেকেন্ড</b></p>
            <p class="gje-info-line">Negative Mark: <b>0.25</b></p>
            <p class="gje-total-msg">Total Question: <b>0</b></p>
            <button type="button" class="gje-start-btn" disabled>Start Mock Test</button>
            <p class="gje-load-msg"></p>
        </div>

        <div class="gje-test-screen" style="display:none;">
            <div class="gje-full-head">
                <h2>ভারতীয় সংবিধান Mock Test 1</h2>
                <button type="button" class="gje-exit-full">Exit Full Screen</button>
            </div>

            <div class="gje-topbar">
                <span>⏱ Time: <b class="gje-time">30</b>s</span>
                <span>Question: <b class="gje-qno">1</b>/<b class="gje-total">0</b></span>
                <span>Negative: <b>0.25</b></span>
            </div>

            <div class="gje-progress"><div class="gje-progress-fill"></div></div>
            <div class="gje-quiz-box">Loading questions...</div>

            <div class="gje-buttons">
                <button type="button" class="gje-prev">Previous</button>
                <button type="button" class="gje-next">Next / Skip</button>
                <button type="button" class="gje-submit">Submit Test</button>
            </div>

            <div class="gje-result-box"></div>
        </div>
    </div>

    <script>
    (function(){
        const root = document.getElementById('gje_mock_675320_1785805271');
        if(!root) return;

        let questions = [];
        let current = 0;
        let selected = [];
        let submitted = false;
        let started = false;
        let timerId = null;

        const src = root.dataset.src || '';
        const perQuestion = parseInt(root.dataset.perQuestion || '30');
        const negative = parseFloat(root.dataset.negative || '0.25');
        let qTime = perQuestion;

        const startScreen = root.querySelector('.gje-start-screen');
        const testScreen = root.querySelector('.gje-test-screen');
        const quizBox = root.querySelector('.gje-quiz-box');
        const resultBox = root.querySelector('.gje-result-box');
        const timeBox = root.querySelector('.gje-time');
        const qnoBox = root.querySelector('.gje-qno');
        const totalBox = root.querySelector('.gje-total');
        const progressFill = root.querySelector('.gje-progress-fill');
        const startBtn = root.querySelector('.gje-start-btn');
        const loadMsg = root.querySelector('.gje-load-msg');
        const totalMsg = root.querySelector('.gje-total-msg b');

        if(src){
            fetch(src, {cache: 'no-store'})
            .then(function(r){ return r.text(); })
            .then(function(js){
                const fakeWindow = {};
                const result = new Function(
                    'window',
                    js + '; return window.questions || window.gjeQuestions || (typeof questions !== "undefined" ? questions : []);'
                )(fakeWindow);

                questions = Array.isArray(result) ? result : [];
                totalMsg.textContent = questions.length;

                if(questions.length > 0){
                    startBtn.disabled = false;
                    startBtn.textContent = 'Start Mock Test';
                    loadMsg.style.display = 'none';
                } else {
                    startBtn.disabled = true;
                    loadMsg.innerHTML = '<span style="color:red;">Question পাওয়া যায়নি। JS file-এ questions array আছে কিনা check করুন।</span>';
                }
            })
            .catch(function(){
                startBtn.disabled = true;
                totalMsg.textContent = '0';
                loadMsg.innerHTML = '<span style="color:red;">CDN file load হয়নি। Link check করুন।</span>';
            });
        } else {
            startBtn.disabled = true;
            loadMsg.innerHTML = '<span style="color:red;">Shortcode-এ src URL দিন।</span>';
        }

        function getAnswerIndex(q){
            if(typeof q.answer === 'number') return q.answer;
            if(typeof q.ans === 'number') return q.ans;
            if(typeof q.correct === 'number') return q.correct;
            if(typeof q.answer === 'string' && Array.isArray(q.options)) return q.options.indexOf(q.answer);
            return -1;
        }

        function getQuestionText(q){
            return q.q || q.question || q.title || '';
        }

        function startTest(){
            if(started || questions.length === 0) return;
            started = true;
            selected = Array(questions.length).fill(null);
            totalBox.textContent = questions.length;
            startScreen.style.display = 'none';
            testScreen.style.display = 'block';
            openFullScreen(root);
            loadQuestion();
        }

        function openFullScreen(el){
            if(el.requestFullscreen) el.requestFullscreen().catch(function(){});
            else if(el.webkitRequestFullscreen) el.webkitRequestFullscreen();
            else if(el.msRequestFullscreen) el.msRequestFullscreen();
        }

        function closeFullScreen(){
            if(document.fullscreenElement && document.exitFullscreen) document.exitFullscreen();
            else if(document.webkitFullscreenElement && document.webkitExitFullscreen) document.webkitExitFullscreen();
        }

        function startQuestionTimer(){
            clearInterval(timerId);
            qTime = perQuestion;
            updateTimer();
            timerId = setInterval(function(){
                if(submitted) return clearInterval(timerId);
                qTime--;
                updateTimer();
                if(qTime <= 0){
                    clearInterval(timerId);
                    autoSkipQuestion();
                }
            }, 1000);
        }

        function updateTimer(){
            timeBox.textContent = qTime;
            if(qTime <= 5) timeBox.classList.add('gje-danger-time');
            else timeBox.classList.remove('gje-danger-time');
        }

        function autoSkipQuestion(){
            if(current < questions.length - 1){
                current++;
                loadQuestion();
            } else {
                submitTest();
            }
        }

        function loadQuestion(){
            if(submitted) return;
            const q = questions[current];
            qnoBox.textContent = current + 1;
            progressFill.style.width = (((current + 1) / questions.length) * 100) + '%';

            let html = '<div class="gje-question">Q' + (current + 1) + '. ' + escapeHtml(getQuestionText(q)) + '</div>';
            (q.options || []).forEach(function(op, i){
                html += '<label class="gje-option"><input type="radio" name="gje_option_gje_mock_675320_1785805271" ' + (selected[current] === i ? 'checked' : '') + ' data-index="' + i + '"> ' + escapeHtml(op) + '</label>';
            });

            quizBox.innerHTML = html;
            quizBox.querySelectorAll('input[type="radio"]').forEach(function(input){
                input.addEventListener('change', function(){
                    selected[current] = parseInt(this.dataset.index);
                });
            });
            startQuestionTimer();
        }

        function submitTest(){
            if(submitted) return;
            submitted = true;
            clearInterval(timerId);

            let correct = 0, wrong = 0, notAttempt = 0;
            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                if(selected[i] === null) notAttempt++;
                else if(selected[i] === ans) correct++;
                else wrong++;
            });

            const score = correct - (wrong * negative);
            let html = '<h3>Result</h3>' +
                '<div class="gje-result-grid">' +
                '<div>✅ Correct<br><b>' + correct + '</b></div>' +
                '<div>❌ Wrong<br><b>' + wrong + '</b></div>' +
                '<div>⚪ Not Attempted<br><b>' + notAttempt + '</b></div>' +
                '<div>🏆 Score<br><b>' + score.toFixed(2) + '</b></div>' +
                '</div><h3>Answer Review</h3>';

            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                html += '<div class="gje-review"><b>Q' + (i+1) + '. ' + escapeHtml(getQuestionText(q)) + '</b>';
                (q.options || []).forEach(function(op, j){
                    let cls = '';
                    if(j === ans) cls = ' gje-correct';
                    if(selected[i] === j && selected[i] !== ans) cls = ' gje-wrong';
                    html += '<div class="gje-review-option' + cls + '">' + escapeHtml(op) + '</div>';
                });
                if(q.explanation){ html += '<p><b>Explanation:</b> ' + escapeHtml(q.explanation) + '</p>'; }
                html += '</div>';
            });

            quizBox.innerHTML = '';
            root.querySelector('.gje-buttons').style.display = 'none';
            root.querySelector('.gje-topbar').style.display = 'none';
            root.querySelector('.gje-progress').style.display = 'none';
            resultBox.innerHTML = html;
            resultBox.scrollIntoView({behavior:'smooth'});
        }

        function escapeHtml(text){
            return String(text).replace(/[&<>'"]/g, function(m){
                return {'&':'&amp;','<':'&lt;','>':'&gt;',"'":'&#039;','"':'&quot;'}[m];
            });
        }

        startBtn.addEventListener('click', startTest);
        root.querySelector('.gje-exit-full').addEventListener('click', closeFullScreen);
        root.querySelector('.gje-prev').addEventListener('click', function(){
            if(current > 0){ current--; loadQuestion(); }
        });
        root.querySelector('.gje-next').addEventListener('click', function(){
            if(current < questions.length - 1){ current++; loadQuestion(); }
            else submitTest();
        });
        root.querySelector('.gje-submit').addEventListener('click', submitTest);
    })();
    </script>
    


    <div id="gje_mock_130119_1785805271" class="gje-mock-wrap"
         data-src="https://cdn.jsdelivr.net/gh/GovtJobExams/mock-test-constitutions/ICMock2.js"
         data-negative="0.25"
         data-per-question="30">

        <div class="gje-start-screen">
            <h2>ভারতীয় সংবিধান Mock Test 2</h2>
            <p class="gje-info-line">প্রতি প্রশ্নের সময়: <b>30 সেকেন্ড</b></p>
            <p class="gje-info-line">Negative Mark: <b>0.25</b></p>
            <p class="gje-total-msg">Total Question: <b>0</b></p>
            <button type="button" class="gje-start-btn" disabled>Start Mock Test</button>
            <p class="gje-load-msg"></p>
        </div>

        <div class="gje-test-screen" style="display:none;">
            <div class="gje-full-head">
                <h2>ভারতীয় সংবিধান Mock Test 2</h2>
                <button type="button" class="gje-exit-full">Exit Full Screen</button>
            </div>

            <div class="gje-topbar">
                <span>⏱ Time: <b class="gje-time">30</b>s</span>
                <span>Question: <b class="gje-qno">1</b>/<b class="gje-total">0</b></span>
                <span>Negative: <b>0.25</b></span>
            </div>

            <div class="gje-progress"><div class="gje-progress-fill"></div></div>
            <div class="gje-quiz-box">Loading questions...</div>

            <div class="gje-buttons">
                <button type="button" class="gje-prev">Previous</button>
                <button type="button" class="gje-next">Next / Skip</button>
                <button type="button" class="gje-submit">Submit Test</button>
            </div>

            <div class="gje-result-box"></div>
        </div>
    </div>

    <script>
    (function(){
        const root = document.getElementById('gje_mock_130119_1785805271');
        if(!root) return;

        let questions = [];
        let current = 0;
        let selected = [];
        let submitted = false;
        let started = false;
        let timerId = null;

        const src = root.dataset.src || '';
        const perQuestion = parseInt(root.dataset.perQuestion || '30');
        const negative = parseFloat(root.dataset.negative || '0.25');
        let qTime = perQuestion;

        const startScreen = root.querySelector('.gje-start-screen');
        const testScreen = root.querySelector('.gje-test-screen');
        const quizBox = root.querySelector('.gje-quiz-box');
        const resultBox = root.querySelector('.gje-result-box');
        const timeBox = root.querySelector('.gje-time');
        const qnoBox = root.querySelector('.gje-qno');
        const totalBox = root.querySelector('.gje-total');
        const progressFill = root.querySelector('.gje-progress-fill');
        const startBtn = root.querySelector('.gje-start-btn');
        const loadMsg = root.querySelector('.gje-load-msg');
        const totalMsg = root.querySelector('.gje-total-msg b');

        if(src){
            fetch(src, {cache: 'no-store'})
            .then(function(r){ return r.text(); })
            .then(function(js){
                const fakeWindow = {};
                const result = new Function(
                    'window',
                    js + '; return window.questions || window.gjeQuestions || (typeof questions !== "undefined" ? questions : []);'
                )(fakeWindow);

                questions = Array.isArray(result) ? result : [];
                totalMsg.textContent = questions.length;

                if(questions.length > 0){
                    startBtn.disabled = false;
                    startBtn.textContent = 'Start Mock Test';
                    loadMsg.style.display = 'none';
                } else {
                    startBtn.disabled = true;
                    loadMsg.innerHTML = '<span style="color:red;">Question পাওয়া যায়নি। JS file-এ questions array আছে কিনা check করুন।</span>';
                }
            })
            .catch(function(){
                startBtn.disabled = true;
                totalMsg.textContent = '0';
                loadMsg.innerHTML = '<span style="color:red;">CDN file load হয়নি। Link check করুন।</span>';
            });
        } else {
            startBtn.disabled = true;
            loadMsg.innerHTML = '<span style="color:red;">Shortcode-এ src URL দিন।</span>';
        }

        function getAnswerIndex(q){
            if(typeof q.answer === 'number') return q.answer;
            if(typeof q.ans === 'number') return q.ans;
            if(typeof q.correct === 'number') return q.correct;
            if(typeof q.answer === 'string' && Array.isArray(q.options)) return q.options.indexOf(q.answer);
            return -1;
        }

        function getQuestionText(q){
            return q.q || q.question || q.title || '';
        }

        function startTest(){
            if(started || questions.length === 0) return;
            started = true;
            selected = Array(questions.length).fill(null);
            totalBox.textContent = questions.length;
            startScreen.style.display = 'none';
            testScreen.style.display = 'block';
            openFullScreen(root);
            loadQuestion();
        }

        function openFullScreen(el){
            if(el.requestFullscreen) el.requestFullscreen().catch(function(){});
            else if(el.webkitRequestFullscreen) el.webkitRequestFullscreen();
            else if(el.msRequestFullscreen) el.msRequestFullscreen();
        }

        function closeFullScreen(){
            if(document.fullscreenElement && document.exitFullscreen) document.exitFullscreen();
            else if(document.webkitFullscreenElement && document.webkitExitFullscreen) document.webkitExitFullscreen();
        }

        function startQuestionTimer(){
            clearInterval(timerId);
            qTime = perQuestion;
            updateTimer();
            timerId = setInterval(function(){
                if(submitted) return clearInterval(timerId);
                qTime--;
                updateTimer();
                if(qTime <= 0){
                    clearInterval(timerId);
                    autoSkipQuestion();
                }
            }, 1000);
        }

        function updateTimer(){
            timeBox.textContent = qTime;
            if(qTime <= 5) timeBox.classList.add('gje-danger-time');
            else timeBox.classList.remove('gje-danger-time');
        }

        function autoSkipQuestion(){
            if(current < questions.length - 1){
                current++;
                loadQuestion();
            } else {
                submitTest();
            }
        }

        function loadQuestion(){
            if(submitted) return;
            const q = questions[current];
            qnoBox.textContent = current + 1;
            progressFill.style.width = (((current + 1) / questions.length) * 100) + '%';

            let html = '<div class="gje-question">Q' + (current + 1) + '. ' + escapeHtml(getQuestionText(q)) + '</div>';
            (q.options || []).forEach(function(op, i){
                html += '<label class="gje-option"><input type="radio" name="gje_option_gje_mock_130119_1785805271" ' + (selected[current] === i ? 'checked' : '') + ' data-index="' + i + '"> ' + escapeHtml(op) + '</label>';
            });

            quizBox.innerHTML = html;
            quizBox.querySelectorAll('input[type="radio"]').forEach(function(input){
                input.addEventListener('change', function(){
                    selected[current] = parseInt(this.dataset.index);
                });
            });
            startQuestionTimer();
        }

        function submitTest(){
            if(submitted) return;
            submitted = true;
            clearInterval(timerId);

            let correct = 0, wrong = 0, notAttempt = 0;
            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                if(selected[i] === null) notAttempt++;
                else if(selected[i] === ans) correct++;
                else wrong++;
            });

            const score = correct - (wrong * negative);
            let html = '<h3>Result</h3>' +
                '<div class="gje-result-grid">' +
                '<div>✅ Correct<br><b>' + correct + '</b></div>' +
                '<div>❌ Wrong<br><b>' + wrong + '</b></div>' +
                '<div>⚪ Not Attempted<br><b>' + notAttempt + '</b></div>' +
                '<div>🏆 Score<br><b>' + score.toFixed(2) + '</b></div>' +
                '</div><h3>Answer Review</h3>';

            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                html += '<div class="gje-review"><b>Q' + (i+1) + '. ' + escapeHtml(getQuestionText(q)) + '</b>';
                (q.options || []).forEach(function(op, j){
                    let cls = '';
                    if(j === ans) cls = ' gje-correct';
                    if(selected[i] === j && selected[i] !== ans) cls = ' gje-wrong';
                    html += '<div class="gje-review-option' + cls + '">' + escapeHtml(op) + '</div>';
                });
                if(q.explanation){ html += '<p><b>Explanation:</b> ' + escapeHtml(q.explanation) + '</p>'; }
                html += '</div>';
            });

            quizBox.innerHTML = '';
            root.querySelector('.gje-buttons').style.display = 'none';
            root.querySelector('.gje-topbar').style.display = 'none';
            root.querySelector('.gje-progress').style.display = 'none';
            resultBox.innerHTML = html;
            resultBox.scrollIntoView({behavior:'smooth'});
        }

        function escapeHtml(text){
            return String(text).replace(/[&<>'"]/g, function(m){
                return {'&':'&amp;','<':'&lt;','>':'&gt;',"'":'&#039;','"':'&quot;'}[m];
            });
        }

        startBtn.addEventListener('click', startTest);
        root.querySelector('.gje-exit-full').addEventListener('click', closeFullScreen);
        root.querySelector('.gje-prev').addEventListener('click', function(){
            if(current > 0){ current--; loadQuestion(); }
        });
        root.querySelector('.gje-next').addEventListener('click', function(){
            if(current < questions.length - 1){ current++; loadQuestion(); }
            else submitTest();
        });
        root.querySelector('.gje-submit').addEventListener('click', submitTest);
    })();
    </script>
    


    <div id="gje_mock_625854_1785805271" class="gje-mock-wrap"
         data-src="https://cdn.jsdelivr.net/gh/GovtJobExams/mock-test-constitutions/ICMock3.js"
         data-negative="0.25"
         data-per-question="30">

        <div class="gje-start-screen">
            <h2>ভারতীয় সংবিধান Mock Test 3</h2>
            <p class="gje-info-line">প্রতি প্রশ্নের সময়: <b>30 সেকেন্ড</b></p>
            <p class="gje-info-line">Negative Mark: <b>0.25</b></p>
            <p class="gje-total-msg">Total Question: <b>0</b></p>
            <button type="button" class="gje-start-btn" disabled>Start Mock Test</button>
            <p class="gje-load-msg"></p>
        </div>

        <div class="gje-test-screen" style="display:none;">
            <div class="gje-full-head">
                <h2>ভারতীয় সংবিধান Mock Test 3</h2>
                <button type="button" class="gje-exit-full">Exit Full Screen</button>
            </div>

            <div class="gje-topbar">
                <span>⏱ Time: <b class="gje-time">30</b>s</span>
                <span>Question: <b class="gje-qno">1</b>/<b class="gje-total">0</b></span>
                <span>Negative: <b>0.25</b></span>
            </div>

            <div class="gje-progress"><div class="gje-progress-fill"></div></div>
            <div class="gje-quiz-box">Loading questions...</div>

            <div class="gje-buttons">
                <button type="button" class="gje-prev">Previous</button>
                <button type="button" class="gje-next">Next / Skip</button>
                <button type="button" class="gje-submit">Submit Test</button>
            </div>

            <div class="gje-result-box"></div>
        </div>
    </div>

    <script>
    (function(){
        const root = document.getElementById('gje_mock_625854_1785805271');
        if(!root) return;

        let questions = [];
        let current = 0;
        let selected = [];
        let submitted = false;
        let started = false;
        let timerId = null;

        const src = root.dataset.src || '';
        const perQuestion = parseInt(root.dataset.perQuestion || '30');
        const negative = parseFloat(root.dataset.negative || '0.25');
        let qTime = perQuestion;

        const startScreen = root.querySelector('.gje-start-screen');
        const testScreen = root.querySelector('.gje-test-screen');
        const quizBox = root.querySelector('.gje-quiz-box');
        const resultBox = root.querySelector('.gje-result-box');
        const timeBox = root.querySelector('.gje-time');
        const qnoBox = root.querySelector('.gje-qno');
        const totalBox = root.querySelector('.gje-total');
        const progressFill = root.querySelector('.gje-progress-fill');
        const startBtn = root.querySelector('.gje-start-btn');
        const loadMsg = root.querySelector('.gje-load-msg');
        const totalMsg = root.querySelector('.gje-total-msg b');

        if(src){
            fetch(src, {cache: 'no-store'})
            .then(function(r){ return r.text(); })
            .then(function(js){
                const fakeWindow = {};
                const result = new Function(
                    'window',
                    js + '; return window.questions || window.gjeQuestions || (typeof questions !== "undefined" ? questions : []);'
                )(fakeWindow);

                questions = Array.isArray(result) ? result : [];
                totalMsg.textContent = questions.length;

                if(questions.length > 0){
                    startBtn.disabled = false;
                    startBtn.textContent = 'Start Mock Test';
                    loadMsg.style.display = 'none';
                } else {
                    startBtn.disabled = true;
                    loadMsg.innerHTML = '<span style="color:red;">Question পাওয়া যায়নি। JS file-এ questions array আছে কিনা check করুন।</span>';
                }
            })
            .catch(function(){
                startBtn.disabled = true;
                totalMsg.textContent = '0';
                loadMsg.innerHTML = '<span style="color:red;">CDN file load হয়নি। Link check করুন।</span>';
            });
        } else {
            startBtn.disabled = true;
            loadMsg.innerHTML = '<span style="color:red;">Shortcode-এ src URL দিন।</span>';
        }

        function getAnswerIndex(q){
            if(typeof q.answer === 'number') return q.answer;
            if(typeof q.ans === 'number') return q.ans;
            if(typeof q.correct === 'number') return q.correct;
            if(typeof q.answer === 'string' && Array.isArray(q.options)) return q.options.indexOf(q.answer);
            return -1;
        }

        function getQuestionText(q){
            return q.q || q.question || q.title || '';
        }

        function startTest(){
            if(started || questions.length === 0) return;
            started = true;
            selected = Array(questions.length).fill(null);
            totalBox.textContent = questions.length;
            startScreen.style.display = 'none';
            testScreen.style.display = 'block';
            openFullScreen(root);
            loadQuestion();
        }

        function openFullScreen(el){
            if(el.requestFullscreen) el.requestFullscreen().catch(function(){});
            else if(el.webkitRequestFullscreen) el.webkitRequestFullscreen();
            else if(el.msRequestFullscreen) el.msRequestFullscreen();
        }

        function closeFullScreen(){
            if(document.fullscreenElement && document.exitFullscreen) document.exitFullscreen();
            else if(document.webkitFullscreenElement && document.webkitExitFullscreen) document.webkitExitFullscreen();
        }

        function startQuestionTimer(){
            clearInterval(timerId);
            qTime = perQuestion;
            updateTimer();
            timerId = setInterval(function(){
                if(submitted) return clearInterval(timerId);
                qTime--;
                updateTimer();
                if(qTime <= 0){
                    clearInterval(timerId);
                    autoSkipQuestion();
                }
            }, 1000);
        }

        function updateTimer(){
            timeBox.textContent = qTime;
            if(qTime <= 5) timeBox.classList.add('gje-danger-time');
            else timeBox.classList.remove('gje-danger-time');
        }

        function autoSkipQuestion(){
            if(current < questions.length - 1){
                current++;
                loadQuestion();
            } else {
                submitTest();
            }
        }

        function loadQuestion(){
            if(submitted) return;
            const q = questions[current];
            qnoBox.textContent = current + 1;
            progressFill.style.width = (((current + 1) / questions.length) * 100) + '%';

            let html = '<div class="gje-question">Q' + (current + 1) + '. ' + escapeHtml(getQuestionText(q)) + '</div>';
            (q.options || []).forEach(function(op, i){
                html += '<label class="gje-option"><input type="radio" name="gje_option_gje_mock_625854_1785805271" ' + (selected[current] === i ? 'checked' : '') + ' data-index="' + i + '"> ' + escapeHtml(op) + '</label>';
            });

            quizBox.innerHTML = html;
            quizBox.querySelectorAll('input[type="radio"]').forEach(function(input){
                input.addEventListener('change', function(){
                    selected[current] = parseInt(this.dataset.index);
                });
            });
            startQuestionTimer();
        }

        function submitTest(){
            if(submitted) return;
            submitted = true;
            clearInterval(timerId);

            let correct = 0, wrong = 0, notAttempt = 0;
            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                if(selected[i] === null) notAttempt++;
                else if(selected[i] === ans) correct++;
                else wrong++;
            });

            const score = correct - (wrong * negative);
            let html = '<h3>Result</h3>' +
                '<div class="gje-result-grid">' +
                '<div>✅ Correct<br><b>' + correct + '</b></div>' +
                '<div>❌ Wrong<br><b>' + wrong + '</b></div>' +
                '<div>⚪ Not Attempted<br><b>' + notAttempt + '</b></div>' +
                '<div>🏆 Score<br><b>' + score.toFixed(2) + '</b></div>' +
                '</div><h3>Answer Review</h3>';

            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                html += '<div class="gje-review"><b>Q' + (i+1) + '. ' + escapeHtml(getQuestionText(q)) + '</b>';
                (q.options || []).forEach(function(op, j){
                    let cls = '';
                    if(j === ans) cls = ' gje-correct';
                    if(selected[i] === j && selected[i] !== ans) cls = ' gje-wrong';
                    html += '<div class="gje-review-option' + cls + '">' + escapeHtml(op) + '</div>';
                });
                if(q.explanation){ html += '<p><b>Explanation:</b> ' + escapeHtml(q.explanation) + '</p>'; }
                html += '</div>';
            });

            quizBox.innerHTML = '';
            root.querySelector('.gje-buttons').style.display = 'none';
            root.querySelector('.gje-topbar').style.display = 'none';
            root.querySelector('.gje-progress').style.display = 'none';
            resultBox.innerHTML = html;
            resultBox.scrollIntoView({behavior:'smooth'});
        }

        function escapeHtml(text){
            return String(text).replace(/[&<>'"]/g, function(m){
                return {'&':'&amp;','<':'&lt;','>':'&gt;',"'":'&#039;','"':'&quot;'}[m];
            });
        }

        startBtn.addEventListener('click', startTest);
        root.querySelector('.gje-exit-full').addEventListener('click', closeFullScreen);
        root.querySelector('.gje-prev').addEventListener('click', function(){
            if(current > 0){ current--; loadQuestion(); }
        });
        root.querySelector('.gje-next').addEventListener('click', function(){
            if(current < questions.length - 1){ current++; loadQuestion(); }
            else submitTest();
        });
        root.querySelector('.gje-submit').addEventListener('click', submitTest);
    })();
    </script>
    


    <div id="gje_mock_206167_1785805271" class="gje-mock-wrap"
         data-src="https://cdn.jsdelivr.net/gh/GovtJobExams/mock-test-constitutions/ICMock4.js"
         data-negative="0.25"
         data-per-question="30">

        <div class="gje-start-screen">
            <h2>ভারতীয় সংবিধান Mock Test 4</h2>
            <p class="gje-info-line">প্রতি প্রশ্নের সময়: <b>30 সেকেন্ড</b></p>
            <p class="gje-info-line">Negative Mark: <b>0.25</b></p>
            <p class="gje-total-msg">Total Question: <b>0</b></p>
            <button type="button" class="gje-start-btn" disabled>Start Mock Test</button>
            <p class="gje-load-msg"></p>
        </div>

        <div class="gje-test-screen" style="display:none;">
            <div class="gje-full-head">
                <h2>ভারতীয় সংবিধান Mock Test 4</h2>
                <button type="button" class="gje-exit-full">Exit Full Screen</button>
            </div>

            <div class="gje-topbar">
                <span>⏱ Time: <b class="gje-time">30</b>s</span>
                <span>Question: <b class="gje-qno">1</b>/<b class="gje-total">0</b></span>
                <span>Negative: <b>0.25</b></span>
            </div>

            <div class="gje-progress"><div class="gje-progress-fill"></div></div>
            <div class="gje-quiz-box">Loading questions...</div>

            <div class="gje-buttons">
                <button type="button" class="gje-prev">Previous</button>
                <button type="button" class="gje-next">Next / Skip</button>
                <button type="button" class="gje-submit">Submit Test</button>
            </div>

            <div class="gje-result-box"></div>
        </div>
    </div>

    <script>
    (function(){
        const root = document.getElementById('gje_mock_206167_1785805271');
        if(!root) return;

        let questions = [];
        let current = 0;
        let selected = [];
        let submitted = false;
        let started = false;
        let timerId = null;

        const src = root.dataset.src || '';
        const perQuestion = parseInt(root.dataset.perQuestion || '30');
        const negative = parseFloat(root.dataset.negative || '0.25');
        let qTime = perQuestion;

        const startScreen = root.querySelector('.gje-start-screen');
        const testScreen = root.querySelector('.gje-test-screen');
        const quizBox = root.querySelector('.gje-quiz-box');
        const resultBox = root.querySelector('.gje-result-box');
        const timeBox = root.querySelector('.gje-time');
        const qnoBox = root.querySelector('.gje-qno');
        const totalBox = root.querySelector('.gje-total');
        const progressFill = root.querySelector('.gje-progress-fill');
        const startBtn = root.querySelector('.gje-start-btn');
        const loadMsg = root.querySelector('.gje-load-msg');
        const totalMsg = root.querySelector('.gje-total-msg b');

        if(src){
            fetch(src, {cache: 'no-store'})
            .then(function(r){ return r.text(); })
            .then(function(js){
                const fakeWindow = {};
                const result = new Function(
                    'window',
                    js + '; return window.questions || window.gjeQuestions || (typeof questions !== "undefined" ? questions : []);'
                )(fakeWindow);

                questions = Array.isArray(result) ? result : [];
                totalMsg.textContent = questions.length;

                if(questions.length > 0){
                    startBtn.disabled = false;
                    startBtn.textContent = 'Start Mock Test';
                    loadMsg.style.display = 'none';
                } else {
                    startBtn.disabled = true;
                    loadMsg.innerHTML = '<span style="color:red;">Question পাওয়া যায়নি। JS file-এ questions array আছে কিনা check করুন।</span>';
                }
            })
            .catch(function(){
                startBtn.disabled = true;
                totalMsg.textContent = '0';
                loadMsg.innerHTML = '<span style="color:red;">CDN file load হয়নি। Link check করুন।</span>';
            });
        } else {
            startBtn.disabled = true;
            loadMsg.innerHTML = '<span style="color:red;">Shortcode-এ src URL দিন।</span>';
        }

        function getAnswerIndex(q){
            if(typeof q.answer === 'number') return q.answer;
            if(typeof q.ans === 'number') return q.ans;
            if(typeof q.correct === 'number') return q.correct;
            if(typeof q.answer === 'string' && Array.isArray(q.options)) return q.options.indexOf(q.answer);
            return -1;
        }

        function getQuestionText(q){
            return q.q || q.question || q.title || '';
        }

        function startTest(){
            if(started || questions.length === 0) return;
            started = true;
            selected = Array(questions.length).fill(null);
            totalBox.textContent = questions.length;
            startScreen.style.display = 'none';
            testScreen.style.display = 'block';
            openFullScreen(root);
            loadQuestion();
        }

        function openFullScreen(el){
            if(el.requestFullscreen) el.requestFullscreen().catch(function(){});
            else if(el.webkitRequestFullscreen) el.webkitRequestFullscreen();
            else if(el.msRequestFullscreen) el.msRequestFullscreen();
        }

        function closeFullScreen(){
            if(document.fullscreenElement && document.exitFullscreen) document.exitFullscreen();
            else if(document.webkitFullscreenElement && document.webkitExitFullscreen) document.webkitExitFullscreen();
        }

        function startQuestionTimer(){
            clearInterval(timerId);
            qTime = perQuestion;
            updateTimer();
            timerId = setInterval(function(){
                if(submitted) return clearInterval(timerId);
                qTime--;
                updateTimer();
                if(qTime <= 0){
                    clearInterval(timerId);
                    autoSkipQuestion();
                }
            }, 1000);
        }

        function updateTimer(){
            timeBox.textContent = qTime;
            if(qTime <= 5) timeBox.classList.add('gje-danger-time');
            else timeBox.classList.remove('gje-danger-time');
        }

        function autoSkipQuestion(){
            if(current < questions.length - 1){
                current++;
                loadQuestion();
            } else {
                submitTest();
            }
        }

        function loadQuestion(){
            if(submitted) return;
            const q = questions[current];
            qnoBox.textContent = current + 1;
            progressFill.style.width = (((current + 1) / questions.length) * 100) + '%';

            let html = '<div class="gje-question">Q' + (current + 1) + '. ' + escapeHtml(getQuestionText(q)) + '</div>';
            (q.options || []).forEach(function(op, i){
                html += '<label class="gje-option"><input type="radio" name="gje_option_gje_mock_206167_1785805271" ' + (selected[current] === i ? 'checked' : '') + ' data-index="' + i + '"> ' + escapeHtml(op) + '</label>';
            });

            quizBox.innerHTML = html;
            quizBox.querySelectorAll('input[type="radio"]').forEach(function(input){
                input.addEventListener('change', function(){
                    selected[current] = parseInt(this.dataset.index);
                });
            });
            startQuestionTimer();
        }

        function submitTest(){
            if(submitted) return;
            submitted = true;
            clearInterval(timerId);

            let correct = 0, wrong = 0, notAttempt = 0;
            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                if(selected[i] === null) notAttempt++;
                else if(selected[i] === ans) correct++;
                else wrong++;
            });

            const score = correct - (wrong * negative);
            let html = '<h3>Result</h3>' +
                '<div class="gje-result-grid">' +
                '<div>✅ Correct<br><b>' + correct + '</b></div>' +
                '<div>❌ Wrong<br><b>' + wrong + '</b></div>' +
                '<div>⚪ Not Attempted<br><b>' + notAttempt + '</b></div>' +
                '<div>🏆 Score<br><b>' + score.toFixed(2) + '</b></div>' +
                '</div><h3>Answer Review</h3>';

            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                html += '<div class="gje-review"><b>Q' + (i+1) + '. ' + escapeHtml(getQuestionText(q)) + '</b>';
                (q.options || []).forEach(function(op, j){
                    let cls = '';
                    if(j === ans) cls = ' gje-correct';
                    if(selected[i] === j && selected[i] !== ans) cls = ' gje-wrong';
                    html += '<div class="gje-review-option' + cls + '">' + escapeHtml(op) + '</div>';
                });
                if(q.explanation){ html += '<p><b>Explanation:</b> ' + escapeHtml(q.explanation) + '</p>'; }
                html += '</div>';
            });

            quizBox.innerHTML = '';
            root.querySelector('.gje-buttons').style.display = 'none';
            root.querySelector('.gje-topbar').style.display = 'none';
            root.querySelector('.gje-progress').style.display = 'none';
            resultBox.innerHTML = html;
            resultBox.scrollIntoView({behavior:'smooth'});
        }

        function escapeHtml(text){
            return String(text).replace(/[&<>'"]/g, function(m){
                return {'&':'&amp;','<':'&lt;','>':'&gt;',"'":'&#039;','"':'&quot;'}[m];
            });
        }

        startBtn.addEventListener('click', startTest);
        root.querySelector('.gje-exit-full').addEventListener('click', closeFullScreen);
        root.querySelector('.gje-prev').addEventListener('click', function(){
            if(current > 0){ current--; loadQuestion(); }
        });
        root.querySelector('.gje-next').addEventListener('click', function(){
            if(current < questions.length - 1){ current++; loadQuestion(); }
            else submitTest();
        });
        root.querySelector('.gje-submit').addEventListener('click', submitTest);
    })();
    </script>
    


    <div id="gje_mock_618120_1785805271" class="gje-mock-wrap"
         data-src="https://cdn.jsdelivr.net/gh/GovtJobExams/mock-test-constitutions/ICMock5.js"
         data-negative="0.25"
         data-per-question="30">

        <div class="gje-start-screen">
            <h2>ভারতীয় সংবিধান Mock Test 5</h2>
            <p class="gje-info-line">প্রতি প্রশ্নের সময়: <b>30 সেকেন্ড</b></p>
            <p class="gje-info-line">Negative Mark: <b>0.25</b></p>
            <p class="gje-total-msg">Total Question: <b>0</b></p>
            <button type="button" class="gje-start-btn" disabled>Start Mock Test</button>
            <p class="gje-load-msg"></p>
        </div>

        <div class="gje-test-screen" style="display:none;">
            <div class="gje-full-head">
                <h2>ভারতীয় সংবিধান Mock Test 5</h2>
                <button type="button" class="gje-exit-full">Exit Full Screen</button>
            </div>

            <div class="gje-topbar">
                <span>⏱ Time: <b class="gje-time">30</b>s</span>
                <span>Question: <b class="gje-qno">1</b>/<b class="gje-total">0</b></span>
                <span>Negative: <b>0.25</b></span>
            </div>

            <div class="gje-progress"><div class="gje-progress-fill"></div></div>
            <div class="gje-quiz-box">Loading questions...</div>

            <div class="gje-buttons">
                <button type="button" class="gje-prev">Previous</button>
                <button type="button" class="gje-next">Next / Skip</button>
                <button type="button" class="gje-submit">Submit Test</button>
            </div>

            <div class="gje-result-box"></div>
        </div>
    </div>

    <script>
    (function(){
        const root = document.getElementById('gje_mock_618120_1785805271');
        if(!root) return;

        let questions = [];
        let current = 0;
        let selected = [];
        let submitted = false;
        let started = false;
        let timerId = null;

        const src = root.dataset.src || '';
        const perQuestion = parseInt(root.dataset.perQuestion || '30');
        const negative = parseFloat(root.dataset.negative || '0.25');
        let qTime = perQuestion;

        const startScreen = root.querySelector('.gje-start-screen');
        const testScreen = root.querySelector('.gje-test-screen');
        const quizBox = root.querySelector('.gje-quiz-box');
        const resultBox = root.querySelector('.gje-result-box');
        const timeBox = root.querySelector('.gje-time');
        const qnoBox = root.querySelector('.gje-qno');
        const totalBox = root.querySelector('.gje-total');
        const progressFill = root.querySelector('.gje-progress-fill');
        const startBtn = root.querySelector('.gje-start-btn');
        const loadMsg = root.querySelector('.gje-load-msg');
        const totalMsg = root.querySelector('.gje-total-msg b');

        if(src){
            fetch(src, {cache: 'no-store'})
            .then(function(r){ return r.text(); })
            .then(function(js){
                const fakeWindow = {};
                const result = new Function(
                    'window',
                    js + '; return window.questions || window.gjeQuestions || (typeof questions !== "undefined" ? questions : []);'
                )(fakeWindow);

                questions = Array.isArray(result) ? result : [];
                totalMsg.textContent = questions.length;

                if(questions.length > 0){
                    startBtn.disabled = false;
                    startBtn.textContent = 'Start Mock Test';
                    loadMsg.style.display = 'none';
                } else {
                    startBtn.disabled = true;
                    loadMsg.innerHTML = '<span style="color:red;">Question পাওয়া যায়নি। JS file-এ questions array আছে কিনা check করুন।</span>';
                }
            })
            .catch(function(){
                startBtn.disabled = true;
                totalMsg.textContent = '0';
                loadMsg.innerHTML = '<span style="color:red;">CDN file load হয়নি। Link check করুন।</span>';
            });
        } else {
            startBtn.disabled = true;
            loadMsg.innerHTML = '<span style="color:red;">Shortcode-এ src URL দিন।</span>';
        }

        function getAnswerIndex(q){
            if(typeof q.answer === 'number') return q.answer;
            if(typeof q.ans === 'number') return q.ans;
            if(typeof q.correct === 'number') return q.correct;
            if(typeof q.answer === 'string' && Array.isArray(q.options)) return q.options.indexOf(q.answer);
            return -1;
        }

        function getQuestionText(q){
            return q.q || q.question || q.title || '';
        }

        function startTest(){
            if(started || questions.length === 0) return;
            started = true;
            selected = Array(questions.length).fill(null);
            totalBox.textContent = questions.length;
            startScreen.style.display = 'none';
            testScreen.style.display = 'block';
            openFullScreen(root);
            loadQuestion();
        }

        function openFullScreen(el){
            if(el.requestFullscreen) el.requestFullscreen().catch(function(){});
            else if(el.webkitRequestFullscreen) el.webkitRequestFullscreen();
            else if(el.msRequestFullscreen) el.msRequestFullscreen();
        }

        function closeFullScreen(){
            if(document.fullscreenElement && document.exitFullscreen) document.exitFullscreen();
            else if(document.webkitFullscreenElement && document.webkitExitFullscreen) document.webkitExitFullscreen();
        }

        function startQuestionTimer(){
            clearInterval(timerId);
            qTime = perQuestion;
            updateTimer();
            timerId = setInterval(function(){
                if(submitted) return clearInterval(timerId);
                qTime--;
                updateTimer();
                if(qTime <= 0){
                    clearInterval(timerId);
                    autoSkipQuestion();
                }
            }, 1000);
        }

        function updateTimer(){
            timeBox.textContent = qTime;
            if(qTime <= 5) timeBox.classList.add('gje-danger-time');
            else timeBox.classList.remove('gje-danger-time');
        }

        function autoSkipQuestion(){
            if(current < questions.length - 1){
                current++;
                loadQuestion();
            } else {
                submitTest();
            }
        }

        function loadQuestion(){
            if(submitted) return;
            const q = questions[current];
            qnoBox.textContent = current + 1;
            progressFill.style.width = (((current + 1) / questions.length) * 100) + '%';

            let html = '<div class="gje-question">Q' + (current + 1) + '. ' + escapeHtml(getQuestionText(q)) + '</div>';
            (q.options || []).forEach(function(op, i){
                html += '<label class="gje-option"><input type="radio" name="gje_option_gje_mock_618120_1785805271" ' + (selected[current] === i ? 'checked' : '') + ' data-index="' + i + '"> ' + escapeHtml(op) + '</label>';
            });

            quizBox.innerHTML = html;
            quizBox.querySelectorAll('input[type="radio"]').forEach(function(input){
                input.addEventListener('change', function(){
                    selected[current] = parseInt(this.dataset.index);
                });
            });
            startQuestionTimer();
        }

        function submitTest(){
            if(submitted) return;
            submitted = true;
            clearInterval(timerId);

            let correct = 0, wrong = 0, notAttempt = 0;
            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                if(selected[i] === null) notAttempt++;
                else if(selected[i] === ans) correct++;
                else wrong++;
            });

            const score = correct - (wrong * negative);
            let html = '<h3>Result</h3>' +
                '<div class="gje-result-grid">' +
                '<div>✅ Correct<br><b>' + correct + '</b></div>' +
                '<div>❌ Wrong<br><b>' + wrong + '</b></div>' +
                '<div>⚪ Not Attempted<br><b>' + notAttempt + '</b></div>' +
                '<div>🏆 Score<br><b>' + score.toFixed(2) + '</b></div>' +
                '</div><h3>Answer Review</h3>';

            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                html += '<div class="gje-review"><b>Q' + (i+1) + '. ' + escapeHtml(getQuestionText(q)) + '</b>';
                (q.options || []).forEach(function(op, j){
                    let cls = '';
                    if(j === ans) cls = ' gje-correct';
                    if(selected[i] === j && selected[i] !== ans) cls = ' gje-wrong';
                    html += '<div class="gje-review-option' + cls + '">' + escapeHtml(op) + '</div>';
                });
                if(q.explanation){ html += '<p><b>Explanation:</b> ' + escapeHtml(q.explanation) + '</p>'; }
                html += '</div>';
            });

            quizBox.innerHTML = '';
            root.querySelector('.gje-buttons').style.display = 'none';
            root.querySelector('.gje-topbar').style.display = 'none';
            root.querySelector('.gje-progress').style.display = 'none';
            resultBox.innerHTML = html;
            resultBox.scrollIntoView({behavior:'smooth'});
        }

        function escapeHtml(text){
            return String(text).replace(/[&<>'"]/g, function(m){
                return {'&':'&amp;','<':'&lt;','>':'&gt;',"'":'&#039;','"':'&quot;'}[m];
            });
        }

        startBtn.addEventListener('click', startTest);
        root.querySelector('.gje-exit-full').addEventListener('click', closeFullScreen);
        root.querySelector('.gje-prev').addEventListener('click', function(){
            if(current > 0){ current--; loadQuestion(); }
        });
        root.querySelector('.gje-next').addEventListener('click', function(){
            if(current < questions.length - 1){ current++; loadQuestion(); }
            else submitTest();
        });
        root.querySelector('.gje-submit').addEventListener('click', submitTest);
    })();
    </script>
    


    <div id="gje_mock_807615_1785805271" class="gje-mock-wrap"
         data-src="https://cdn.jsdelivr.net/gh/GovtJobExams/mock-test-constitutions/ICMock6.js"
         data-negative="0.25"
         data-per-question="30">

        <div class="gje-start-screen">
            <h2>ভারতীয় সংবিধান Mock Test 6</h2>
            <p class="gje-info-line">প্রতি প্রশ্নের সময়: <b>30 সেকেন্ড</b></p>
            <p class="gje-info-line">Negative Mark: <b>0.25</b></p>
            <p class="gje-total-msg">Total Question: <b>0</b></p>
            <button type="button" class="gje-start-btn" disabled>Start Mock Test</button>
            <p class="gje-load-msg"></p>
        </div>

        <div class="gje-test-screen" style="display:none;">
            <div class="gje-full-head">
                <h2>ভারতীয় সংবিধান Mock Test 6</h2>
                <button type="button" class="gje-exit-full">Exit Full Screen</button>
            </div>

            <div class="gje-topbar">
                <span>⏱ Time: <b class="gje-time">30</b>s</span>
                <span>Question: <b class="gje-qno">1</b>/<b class="gje-total">0</b></span>
                <span>Negative: <b>0.25</b></span>
            </div>

            <div class="gje-progress"><div class="gje-progress-fill"></div></div>
            <div class="gje-quiz-box">Loading questions...</div>

            <div class="gje-buttons">
                <button type="button" class="gje-prev">Previous</button>
                <button type="button" class="gje-next">Next / Skip</button>
                <button type="button" class="gje-submit">Submit Test</button>
            </div>

            <div class="gje-result-box"></div>
        </div>
    </div>

    <script>
    (function(){
        const root = document.getElementById('gje_mock_807615_1785805271');
        if(!root) return;

        let questions = [];
        let current = 0;
        let selected = [];
        let submitted = false;
        let started = false;
        let timerId = null;

        const src = root.dataset.src || '';
        const perQuestion = parseInt(root.dataset.perQuestion || '30');
        const negative = parseFloat(root.dataset.negative || '0.25');
        let qTime = perQuestion;

        const startScreen = root.querySelector('.gje-start-screen');
        const testScreen = root.querySelector('.gje-test-screen');
        const quizBox = root.querySelector('.gje-quiz-box');
        const resultBox = root.querySelector('.gje-result-box');
        const timeBox = root.querySelector('.gje-time');
        const qnoBox = root.querySelector('.gje-qno');
        const totalBox = root.querySelector('.gje-total');
        const progressFill = root.querySelector('.gje-progress-fill');
        const startBtn = root.querySelector('.gje-start-btn');
        const loadMsg = root.querySelector('.gje-load-msg');
        const totalMsg = root.querySelector('.gje-total-msg b');

        if(src){
            fetch(src, {cache: 'no-store'})
            .then(function(r){ return r.text(); })
            .then(function(js){
                const fakeWindow = {};
                const result = new Function(
                    'window',
                    js + '; return window.questions || window.gjeQuestions || (typeof questions !== "undefined" ? questions : []);'
                )(fakeWindow);

                questions = Array.isArray(result) ? result : [];
                totalMsg.textContent = questions.length;

                if(questions.length > 0){
                    startBtn.disabled = false;
                    startBtn.textContent = 'Start Mock Test';
                    loadMsg.style.display = 'none';
                } else {
                    startBtn.disabled = true;
                    loadMsg.innerHTML = '<span style="color:red;">Question পাওয়া যায়নি। JS file-এ questions array আছে কিনা check করুন।</span>';
                }
            })
            .catch(function(){
                startBtn.disabled = true;
                totalMsg.textContent = '0';
                loadMsg.innerHTML = '<span style="color:red;">CDN file load হয়নি। Link check করুন।</span>';
            });
        } else {
            startBtn.disabled = true;
            loadMsg.innerHTML = '<span style="color:red;">Shortcode-এ src URL দিন।</span>';
        }

        function getAnswerIndex(q){
            if(typeof q.answer === 'number') return q.answer;
            if(typeof q.ans === 'number') return q.ans;
            if(typeof q.correct === 'number') return q.correct;
            if(typeof q.answer === 'string' && Array.isArray(q.options)) return q.options.indexOf(q.answer);
            return -1;
        }

        function getQuestionText(q){
            return q.q || q.question || q.title || '';
        }

        function startTest(){
            if(started || questions.length === 0) return;
            started = true;
            selected = Array(questions.length).fill(null);
            totalBox.textContent = questions.length;
            startScreen.style.display = 'none';
            testScreen.style.display = 'block';
            openFullScreen(root);
            loadQuestion();
        }

        function openFullScreen(el){
            if(el.requestFullscreen) el.requestFullscreen().catch(function(){});
            else if(el.webkitRequestFullscreen) el.webkitRequestFullscreen();
            else if(el.msRequestFullscreen) el.msRequestFullscreen();
        }

        function closeFullScreen(){
            if(document.fullscreenElement && document.exitFullscreen) document.exitFullscreen();
            else if(document.webkitFullscreenElement && document.webkitExitFullscreen) document.webkitExitFullscreen();
        }

        function startQuestionTimer(){
            clearInterval(timerId);
            qTime = perQuestion;
            updateTimer();
            timerId = setInterval(function(){
                if(submitted) return clearInterval(timerId);
                qTime--;
                updateTimer();
                if(qTime <= 0){
                    clearInterval(timerId);
                    autoSkipQuestion();
                }
            }, 1000);
        }

        function updateTimer(){
            timeBox.textContent = qTime;
            if(qTime <= 5) timeBox.classList.add('gje-danger-time');
            else timeBox.classList.remove('gje-danger-time');
        }

        function autoSkipQuestion(){
            if(current < questions.length - 1){
                current++;
                loadQuestion();
            } else {
                submitTest();
            }
        }

        function loadQuestion(){
            if(submitted) return;
            const q = questions[current];
            qnoBox.textContent = current + 1;
            progressFill.style.width = (((current + 1) / questions.length) * 100) + '%';

            let html = '<div class="gje-question">Q' + (current + 1) + '. ' + escapeHtml(getQuestionText(q)) + '</div>';
            (q.options || []).forEach(function(op, i){
                html += '<label class="gje-option"><input type="radio" name="gje_option_gje_mock_807615_1785805271" ' + (selected[current] === i ? 'checked' : '') + ' data-index="' + i + '"> ' + escapeHtml(op) + '</label>';
            });

            quizBox.innerHTML = html;
            quizBox.querySelectorAll('input[type="radio"]').forEach(function(input){
                input.addEventListener('change', function(){
                    selected[current] = parseInt(this.dataset.index);
                });
            });
            startQuestionTimer();
        }

        function submitTest(){
            if(submitted) return;
            submitted = true;
            clearInterval(timerId);

            let correct = 0, wrong = 0, notAttempt = 0;
            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                if(selected[i] === null) notAttempt++;
                else if(selected[i] === ans) correct++;
                else wrong++;
            });

            const score = correct - (wrong * negative);
            let html = '<h3>Result</h3>' +
                '<div class="gje-result-grid">' +
                '<div>✅ Correct<br><b>' + correct + '</b></div>' +
                '<div>❌ Wrong<br><b>' + wrong + '</b></div>' +
                '<div>⚪ Not Attempted<br><b>' + notAttempt + '</b></div>' +
                '<div>🏆 Score<br><b>' + score.toFixed(2) + '</b></div>' +
                '</div><h3>Answer Review</h3>';

            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                html += '<div class="gje-review"><b>Q' + (i+1) + '. ' + escapeHtml(getQuestionText(q)) + '</b>';
                (q.options || []).forEach(function(op, j){
                    let cls = '';
                    if(j === ans) cls = ' gje-correct';
                    if(selected[i] === j && selected[i] !== ans) cls = ' gje-wrong';
                    html += '<div class="gje-review-option' + cls + '">' + escapeHtml(op) + '</div>';
                });
                if(q.explanation){ html += '<p><b>Explanation:</b> ' + escapeHtml(q.explanation) + '</p>'; }
                html += '</div>';
            });

            quizBox.innerHTML = '';
            root.querySelector('.gje-buttons').style.display = 'none';
            root.querySelector('.gje-topbar').style.display = 'none';
            root.querySelector('.gje-progress').style.display = 'none';
            resultBox.innerHTML = html;
            resultBox.scrollIntoView({behavior:'smooth'});
        }

        function escapeHtml(text){
            return String(text).replace(/[&<>'"]/g, function(m){
                return {'&':'&amp;','<':'&lt;','>':'&gt;',"'":'&#039;','"':'&quot;'}[m];
            });
        }

        startBtn.addEventListener('click', startTest);
        root.querySelector('.gje-exit-full').addEventListener('click', closeFullScreen);
        root.querySelector('.gje-prev').addEventListener('click', function(){
            if(current > 0){ current--; loadQuestion(); }
        });
        root.querySelector('.gje-next').addEventListener('click', function(){
            if(current < questions.length - 1){ current++; loadQuestion(); }
            else submitTest();
        });
        root.querySelector('.gje-submit').addEventListener('click', submitTest);
    })();
    </script>
    


    <div id="gje_mock_820611_1785805271" class="gje-mock-wrap"
         data-src="https://cdn.jsdelivr.net/gh/GovtJobExams/mock-test-constitutions/ICMock7.js"
         data-negative="0.25"
         data-per-question="30">

        <div class="gje-start-screen">
            <h2>ভারতীয় সংবিধান Mock Test 7</h2>
            <p class="gje-info-line">প্রতি প্রশ্নের সময়: <b>30 সেকেন্ড</b></p>
            <p class="gje-info-line">Negative Mark: <b>0.25</b></p>
            <p class="gje-total-msg">Total Question: <b>0</b></p>
            <button type="button" class="gje-start-btn" disabled>Start Mock Test</button>
            <p class="gje-load-msg"></p>
        </div>

        <div class="gje-test-screen" style="display:none;">
            <div class="gje-full-head">
                <h2>ভারতীয় সংবিধান Mock Test 7</h2>
                <button type="button" class="gje-exit-full">Exit Full Screen</button>
            </div>

            <div class="gje-topbar">
                <span>⏱ Time: <b class="gje-time">30</b>s</span>
                <span>Question: <b class="gje-qno">1</b>/<b class="gje-total">0</b></span>
                <span>Negative: <b>0.25</b></span>
            </div>

            <div class="gje-progress"><div class="gje-progress-fill"></div></div>
            <div class="gje-quiz-box">Loading questions...</div>

            <div class="gje-buttons">
                <button type="button" class="gje-prev">Previous</button>
                <button type="button" class="gje-next">Next / Skip</button>
                <button type="button" class="gje-submit">Submit Test</button>
            </div>

            <div class="gje-result-box"></div>
        </div>
    </div>

    <script>
    (function(){
        const root = document.getElementById('gje_mock_820611_1785805271');
        if(!root) return;

        let questions = [];
        let current = 0;
        let selected = [];
        let submitted = false;
        let started = false;
        let timerId = null;

        const src = root.dataset.src || '';
        const perQuestion = parseInt(root.dataset.perQuestion || '30');
        const negative = parseFloat(root.dataset.negative || '0.25');
        let qTime = perQuestion;

        const startScreen = root.querySelector('.gje-start-screen');
        const testScreen = root.querySelector('.gje-test-screen');
        const quizBox = root.querySelector('.gje-quiz-box');
        const resultBox = root.querySelector('.gje-result-box');
        const timeBox = root.querySelector('.gje-time');
        const qnoBox = root.querySelector('.gje-qno');
        const totalBox = root.querySelector('.gje-total');
        const progressFill = root.querySelector('.gje-progress-fill');
        const startBtn = root.querySelector('.gje-start-btn');
        const loadMsg = root.querySelector('.gje-load-msg');
        const totalMsg = root.querySelector('.gje-total-msg b');

        if(src){
            fetch(src, {cache: 'no-store'})
            .then(function(r){ return r.text(); })
            .then(function(js){
                const fakeWindow = {};
                const result = new Function(
                    'window',
                    js + '; return window.questions || window.gjeQuestions || (typeof questions !== "undefined" ? questions : []);'
                )(fakeWindow);

                questions = Array.isArray(result) ? result : [];
                totalMsg.textContent = questions.length;

                if(questions.length > 0){
                    startBtn.disabled = false;
                    startBtn.textContent = 'Start Mock Test';
                    loadMsg.style.display = 'none';
                } else {
                    startBtn.disabled = true;
                    loadMsg.innerHTML = '<span style="color:red;">Question পাওয়া যায়নি। JS file-এ questions array আছে কিনা check করুন।</span>';
                }
            })
            .catch(function(){
                startBtn.disabled = true;
                totalMsg.textContent = '0';
                loadMsg.innerHTML = '<span style="color:red;">CDN file load হয়নি। Link check করুন।</span>';
            });
        } else {
            startBtn.disabled = true;
            loadMsg.innerHTML = '<span style="color:red;">Shortcode-এ src URL দিন।</span>';
        }

        function getAnswerIndex(q){
            if(typeof q.answer === 'number') return q.answer;
            if(typeof q.ans === 'number') return q.ans;
            if(typeof q.correct === 'number') return q.correct;
            if(typeof q.answer === 'string' && Array.isArray(q.options)) return q.options.indexOf(q.answer);
            return -1;
        }

        function getQuestionText(q){
            return q.q || q.question || q.title || '';
        }

        function startTest(){
            if(started || questions.length === 0) return;
            started = true;
            selected = Array(questions.length).fill(null);
            totalBox.textContent = questions.length;
            startScreen.style.display = 'none';
            testScreen.style.display = 'block';
            openFullScreen(root);
            loadQuestion();
        }

        function openFullScreen(el){
            if(el.requestFullscreen) el.requestFullscreen().catch(function(){});
            else if(el.webkitRequestFullscreen) el.webkitRequestFullscreen();
            else if(el.msRequestFullscreen) el.msRequestFullscreen();
        }

        function closeFullScreen(){
            if(document.fullscreenElement && document.exitFullscreen) document.exitFullscreen();
            else if(document.webkitFullscreenElement && document.webkitExitFullscreen) document.webkitExitFullscreen();
        }

        function startQuestionTimer(){
            clearInterval(timerId);
            qTime = perQuestion;
            updateTimer();
            timerId = setInterval(function(){
                if(submitted) return clearInterval(timerId);
                qTime--;
                updateTimer();
                if(qTime <= 0){
                    clearInterval(timerId);
                    autoSkipQuestion();
                }
            }, 1000);
        }

        function updateTimer(){
            timeBox.textContent = qTime;
            if(qTime <= 5) timeBox.classList.add('gje-danger-time');
            else timeBox.classList.remove('gje-danger-time');
        }

        function autoSkipQuestion(){
            if(current < questions.length - 1){
                current++;
                loadQuestion();
            } else {
                submitTest();
            }
        }

        function loadQuestion(){
            if(submitted) return;
            const q = questions[current];
            qnoBox.textContent = current + 1;
            progressFill.style.width = (((current + 1) / questions.length) * 100) + '%';

            let html = '<div class="gje-question">Q' + (current + 1) + '. ' + escapeHtml(getQuestionText(q)) + '</div>';
            (q.options || []).forEach(function(op, i){
                html += '<label class="gje-option"><input type="radio" name="gje_option_gje_mock_820611_1785805271" ' + (selected[current] === i ? 'checked' : '') + ' data-index="' + i + '"> ' + escapeHtml(op) + '</label>';
            });

            quizBox.innerHTML = html;
            quizBox.querySelectorAll('input[type="radio"]').forEach(function(input){
                input.addEventListener('change', function(){
                    selected[current] = parseInt(this.dataset.index);
                });
            });
            startQuestionTimer();
        }

        function submitTest(){
            if(submitted) return;
            submitted = true;
            clearInterval(timerId);

            let correct = 0, wrong = 0, notAttempt = 0;
            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                if(selected[i] === null) notAttempt++;
                else if(selected[i] === ans) correct++;
                else wrong++;
            });

            const score = correct - (wrong * negative);
            let html = '<h3>Result</h3>' +
                '<div class="gje-result-grid">' +
                '<div>✅ Correct<br><b>' + correct + '</b></div>' +
                '<div>❌ Wrong<br><b>' + wrong + '</b></div>' +
                '<div>⚪ Not Attempted<br><b>' + notAttempt + '</b></div>' +
                '<div>🏆 Score<br><b>' + score.toFixed(2) + '</b></div>' +
                '</div><h3>Answer Review</h3>';

            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                html += '<div class="gje-review"><b>Q' + (i+1) + '. ' + escapeHtml(getQuestionText(q)) + '</b>';
                (q.options || []).forEach(function(op, j){
                    let cls = '';
                    if(j === ans) cls = ' gje-correct';
                    if(selected[i] === j && selected[i] !== ans) cls = ' gje-wrong';
                    html += '<div class="gje-review-option' + cls + '">' + escapeHtml(op) + '</div>';
                });
                if(q.explanation){ html += '<p><b>Explanation:</b> ' + escapeHtml(q.explanation) + '</p>'; }
                html += '</div>';
            });

            quizBox.innerHTML = '';
            root.querySelector('.gje-buttons').style.display = 'none';
            root.querySelector('.gje-topbar').style.display = 'none';
            root.querySelector('.gje-progress').style.display = 'none';
            resultBox.innerHTML = html;
            resultBox.scrollIntoView({behavior:'smooth'});
        }

        function escapeHtml(text){
            return String(text).replace(/[&<>'"]/g, function(m){
                return {'&':'&amp;','<':'&lt;','>':'&gt;',"'":'&#039;','"':'&quot;'}[m];
            });
        }

        startBtn.addEventListener('click', startTest);
        root.querySelector('.gje-exit-full').addEventListener('click', closeFullScreen);
        root.querySelector('.gje-prev').addEventListener('click', function(){
            if(current > 0){ current--; loadQuestion(); }
        });
        root.querySelector('.gje-next').addEventListener('click', function(){
            if(current < questions.length - 1){ current++; loadQuestion(); }
            else submitTest();
        });
        root.querySelector('.gje-submit').addEventListener('click', submitTest);
    })();
    </script>
    


    <div id="gje_mock_909118_1785805271" class="gje-mock-wrap"
         data-src="https://cdn.jsdelivr.net/gh/GovtJobExams/mock-test-constitutions@main/ICMockr8.js?ver=8"
         data-negative="0.25"
         data-per-question="30">

        <div class="gje-start-screen">
            <h2>ভারতীয় সংবিধান Mock Test 8</h2>
            <p class="gje-info-line">প্রতি প্রশ্নের সময়: <b>30 সেকেন্ড</b></p>
            <p class="gje-info-line">Negative Mark: <b>0.25</b></p>
            <p class="gje-total-msg">Total Question: <b>0</b></p>
            <button type="button" class="gje-start-btn" disabled>Start Mock Test</button>
            <p class="gje-load-msg"></p>
        </div>

        <div class="gje-test-screen" style="display:none;">
            <div class="gje-full-head">
                <h2>ভারতীয় সংবিধান Mock Test 8</h2>
                <button type="button" class="gje-exit-full">Exit Full Screen</button>
            </div>

            <div class="gje-topbar">
                <span>⏱ Time: <b class="gje-time">30</b>s</span>
                <span>Question: <b class="gje-qno">1</b>/<b class="gje-total">0</b></span>
                <span>Negative: <b>0.25</b></span>
            </div>

            <div class="gje-progress"><div class="gje-progress-fill"></div></div>
            <div class="gje-quiz-box">Loading questions...</div>

            <div class="gje-buttons">
                <button type="button" class="gje-prev">Previous</button>
                <button type="button" class="gje-next">Next / Skip</button>
                <button type="button" class="gje-submit">Submit Test</button>
            </div>

            <div class="gje-result-box"></div>
        </div>
    </div>

    <script>
    (function(){
        const root = document.getElementById('gje_mock_909118_1785805271');
        if(!root) return;

        let questions = [];
        let current = 0;
        let selected = [];
        let submitted = false;
        let started = false;
        let timerId = null;

        const src = root.dataset.src || '';
        const perQuestion = parseInt(root.dataset.perQuestion || '30');
        const negative = parseFloat(root.dataset.negative || '0.25');
        let qTime = perQuestion;

        const startScreen = root.querySelector('.gje-start-screen');
        const testScreen = root.querySelector('.gje-test-screen');
        const quizBox = root.querySelector('.gje-quiz-box');
        const resultBox = root.querySelector('.gje-result-box');
        const timeBox = root.querySelector('.gje-time');
        const qnoBox = root.querySelector('.gje-qno');
        const totalBox = root.querySelector('.gje-total');
        const progressFill = root.querySelector('.gje-progress-fill');
        const startBtn = root.querySelector('.gje-start-btn');
        const loadMsg = root.querySelector('.gje-load-msg');
        const totalMsg = root.querySelector('.gje-total-msg b');

        if(src){
            fetch(src, {cache: 'no-store'})
            .then(function(r){ return r.text(); })
            .then(function(js){
                const fakeWindow = {};
                const result = new Function(
                    'window',
                    js + '; return window.questions || window.gjeQuestions || (typeof questions !== "undefined" ? questions : []);'
                )(fakeWindow);

                questions = Array.isArray(result) ? result : [];
                totalMsg.textContent = questions.length;

                if(questions.length > 0){
                    startBtn.disabled = false;
                    startBtn.textContent = 'Start Mock Test';
                    loadMsg.style.display = 'none';
                } else {
                    startBtn.disabled = true;
                    loadMsg.innerHTML = '<span style="color:red;">Question পাওয়া যায়নি। JS file-এ questions array আছে কিনা check করুন।</span>';
                }
            })
            .catch(function(){
                startBtn.disabled = true;
                totalMsg.textContent = '0';
                loadMsg.innerHTML = '<span style="color:red;">CDN file load হয়নি। Link check করুন।</span>';
            });
        } else {
            startBtn.disabled = true;
            loadMsg.innerHTML = '<span style="color:red;">Shortcode-এ src URL দিন।</span>';
        }

        function getAnswerIndex(q){
            if(typeof q.answer === 'number') return q.answer;
            if(typeof q.ans === 'number') return q.ans;
            if(typeof q.correct === 'number') return q.correct;
            if(typeof q.answer === 'string' && Array.isArray(q.options)) return q.options.indexOf(q.answer);
            return -1;
        }

        function getQuestionText(q){
            return q.q || q.question || q.title || '';
        }

        function startTest(){
            if(started || questions.length === 0) return;
            started = true;
            selected = Array(questions.length).fill(null);
            totalBox.textContent = questions.length;
            startScreen.style.display = 'none';
            testScreen.style.display = 'block';
            openFullScreen(root);
            loadQuestion();
        }

        function openFullScreen(el){
            if(el.requestFullscreen) el.requestFullscreen().catch(function(){});
            else if(el.webkitRequestFullscreen) el.webkitRequestFullscreen();
            else if(el.msRequestFullscreen) el.msRequestFullscreen();
        }

        function closeFullScreen(){
            if(document.fullscreenElement && document.exitFullscreen) document.exitFullscreen();
            else if(document.webkitFullscreenElement && document.webkitExitFullscreen) document.webkitExitFullscreen();
        }

        function startQuestionTimer(){
            clearInterval(timerId);
            qTime = perQuestion;
            updateTimer();
            timerId = setInterval(function(){
                if(submitted) return clearInterval(timerId);
                qTime--;
                updateTimer();
                if(qTime <= 0){
                    clearInterval(timerId);
                    autoSkipQuestion();
                }
            }, 1000);
        }

        function updateTimer(){
            timeBox.textContent = qTime;
            if(qTime <= 5) timeBox.classList.add('gje-danger-time');
            else timeBox.classList.remove('gje-danger-time');
        }

        function autoSkipQuestion(){
            if(current < questions.length - 1){
                current++;
                loadQuestion();
            } else {
                submitTest();
            }
        }

        function loadQuestion(){
            if(submitted) return;
            const q = questions[current];
            qnoBox.textContent = current + 1;
            progressFill.style.width = (((current + 1) / questions.length) * 100) + '%';

            let html = '<div class="gje-question">Q' + (current + 1) + '. ' + escapeHtml(getQuestionText(q)) + '</div>';
            (q.options || []).forEach(function(op, i){
                html += '<label class="gje-option"><input type="radio" name="gje_option_gje_mock_909118_1785805271" ' + (selected[current] === i ? 'checked' : '') + ' data-index="' + i + '"> ' + escapeHtml(op) + '</label>';
            });

            quizBox.innerHTML = html;
            quizBox.querySelectorAll('input[type="radio"]').forEach(function(input){
                input.addEventListener('change', function(){
                    selected[current] = parseInt(this.dataset.index);
                });
            });
            startQuestionTimer();
        }

        function submitTest(){
            if(submitted) return;
            submitted = true;
            clearInterval(timerId);

            let correct = 0, wrong = 0, notAttempt = 0;
            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                if(selected[i] === null) notAttempt++;
                else if(selected[i] === ans) correct++;
                else wrong++;
            });

            const score = correct - (wrong * negative);
            let html = '<h3>Result</h3>' +
                '<div class="gje-result-grid">' +
                '<div>✅ Correct<br><b>' + correct + '</b></div>' +
                '<div>❌ Wrong<br><b>' + wrong + '</b></div>' +
                '<div>⚪ Not Attempted<br><b>' + notAttempt + '</b></div>' +
                '<div>🏆 Score<br><b>' + score.toFixed(2) + '</b></div>' +
                '</div><h3>Answer Review</h3>';

            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                html += '<div class="gje-review"><b>Q' + (i+1) + '. ' + escapeHtml(getQuestionText(q)) + '</b>';
                (q.options || []).forEach(function(op, j){
                    let cls = '';
                    if(j === ans) cls = ' gje-correct';
                    if(selected[i] === j && selected[i] !== ans) cls = ' gje-wrong';
                    html += '<div class="gje-review-option' + cls + '">' + escapeHtml(op) + '</div>';
                });
                if(q.explanation){ html += '<p><b>Explanation:</b> ' + escapeHtml(q.explanation) + '</p>'; }
                html += '</div>';
            });

            quizBox.innerHTML = '';
            root.querySelector('.gje-buttons').style.display = 'none';
            root.querySelector('.gje-topbar').style.display = 'none';
            root.querySelector('.gje-progress').style.display = 'none';
            resultBox.innerHTML = html;
            resultBox.scrollIntoView({behavior:'smooth'});
        }

        function escapeHtml(text){
            return String(text).replace(/[&<>'"]/g, function(m){
                return {'&':'&amp;','<':'&lt;','>':'&gt;',"'":'&#039;','"':'&quot;'}[m];
            });
        }

        startBtn.addEventListener('click', startTest);
        root.querySelector('.gje-exit-full').addEventListener('click', closeFullScreen);
        root.querySelector('.gje-prev').addEventListener('click', function(){
            if(current > 0){ current--; loadQuestion(); }
        });
        root.querySelector('.gje-next').addEventListener('click', function(){
            if(current < questions.length - 1){ current++; loadQuestion(); }
            else submitTest();
        });
        root.querySelector('.gje-submit').addEventListener('click', submitTest);
    })();
    </script>
    
]]></content:encoded>
					
					<wfw:commentRss>https://govtjobexams.com/free-indian-constitution-mock-test/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Free Geography Mock Test – Online Geography MCQ in Bengali</title>
		<link>https://govtjobexams.com/free-geography-mock-test/</link>
					<comments>https://govtjobexams.com/free-geography-mock-test/#respond</comments>
		
		<dc:creator><![CDATA[Deba]]></dc:creator>
		<pubDate>Thu, 02 Jul 2026 07:27:26 +0000</pubDate>
				<category><![CDATA[Mock Test]]></category>
		<category><![CDATA[Geography Mock Test]]></category>
		<guid isPermaLink="false">https://govtjobexams.com/?p=470</guid>

					<description><![CDATA[আমাদের এক্সপার্ট দ্বারা বাছাই করা, রেল, পুলিশ, গ্রাম পঞ্চায়েত, এসএসসি, PSC তে আসা প্রশ্ন গুলি দিয়ে একটি&#160; মক টেস্ট দেওয়া হলো , খুব শীঘ্রই আরো খুব গুরুত্বপূর্ণ প্রশ্ন দিয়ে মকটেস্ট এর আয়োজন হবে। এরকম ফ্রি তে মকটেস্ট দিতে, চাকুরীর খবর পেতে আমাদের হোয়াটস্যাপ এবং টেলিগ্রাম চ্যানেল ফলো করুন,&#160;আমাদের এই ওয়েবসাইট পেজে বিভিন্ন সরকারি চাকরির খবর, [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">আমাদের এক্সপার্ট দ্বারা বাছাই করা, রেল, পুলিশ, গ্রাম পঞ্চায়েত, এসএসসি, PSC তে আসা প্রশ্ন গুলি দিয়ে একটি&nbsp; মক টেস্ট দেওয়া হলো , খুব শীঘ্রই আরো খুব গুরুত্বপূর্ণ প্রশ্ন দিয়ে মকটেস্ট এর আয়োজন হবে। এরকম ফ্রি তে মকটেস্ট দিতে, চাকুরীর খবর পেতে আমাদের হোয়াটস্যাপ এবং টেলিগ্রাম চ্যানেল ফলো করুন,&nbsp;আমাদের এই ওয়েবসাইট পেজে বিভিন্ন সরকারি চাকরির খবর, সরকারি প্রকল্প এমনকি চাকরির পরীক্ষা সংক্রান্ত এডমিট কার্ড, পরীক্ষার তারিখ , পরীক্ষার সিলেবাস, পরীক্ষার আনসার কি, পরীক্ষার রেজাল্ট সব তথ্য পাওয়ার পাশাপাশি পরীক্ষায় আসার মতো বিভিন্ন টপিকের উপর MCQ টেস্ট দিতে পারবেন। ভালো লাগলে অবশ্যই বন্ধুদের শেয়ার করে দিবেন।আপনার সাফল্য কামনা করি&nbsp;😍</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">&nbsp;</p>


    <div id="gje_mock_300588_1785805271" class="gje-mock-wrap"
         data-src="https://cdn.jsdelivr.net/gh/GovtJobExams/Geography@main/Atmospheres.js"
         data-negative="0.25"
         data-per-question="30">

        <div class="gje-start-screen">
            <h2>বারিমন্ডল ও বায়ুমণ্ডল</h2>
            <p class="gje-info-line">প্রতি প্রশ্নের সময়: <b>30 সেকেন্ড</b></p>
            <p class="gje-info-line">Negative Mark: <b>0.25</b></p>
            <p class="gje-total-msg">Total Question: <b>0</b></p>
            <button type="button" class="gje-start-btn" disabled>Start Mock Test</button>
            <p class="gje-load-msg"></p>
        </div>

        <div class="gje-test-screen" style="display:none;">
            <div class="gje-full-head">
                <h2>বারিমন্ডল ও বায়ুমণ্ডল</h2>
                <button type="button" class="gje-exit-full">Exit Full Screen</button>
            </div>

            <div class="gje-topbar">
                <span>⏱ Time: <b class="gje-time">30</b>s</span>
                <span>Question: <b class="gje-qno">1</b>/<b class="gje-total">0</b></span>
                <span>Negative: <b>0.25</b></span>
            </div>

            <div class="gje-progress"><div class="gje-progress-fill"></div></div>
            <div class="gje-quiz-box">Loading questions...</div>

            <div class="gje-buttons">
                <button type="button" class="gje-prev">Previous</button>
                <button type="button" class="gje-next">Next / Skip</button>
                <button type="button" class="gje-submit">Submit Test</button>
            </div>

            <div class="gje-result-box"></div>
        </div>
    </div>

    <script>
    (function(){
        const root = document.getElementById('gje_mock_300588_1785805271');
        if(!root) return;

        let questions = [];
        let current = 0;
        let selected = [];
        let submitted = false;
        let started = false;
        let timerId = null;

        const src = root.dataset.src || '';
        const perQuestion = parseInt(root.dataset.perQuestion || '30');
        const negative = parseFloat(root.dataset.negative || '0.25');
        let qTime = perQuestion;

        const startScreen = root.querySelector('.gje-start-screen');
        const testScreen = root.querySelector('.gje-test-screen');
        const quizBox = root.querySelector('.gje-quiz-box');
        const resultBox = root.querySelector('.gje-result-box');
        const timeBox = root.querySelector('.gje-time');
        const qnoBox = root.querySelector('.gje-qno');
        const totalBox = root.querySelector('.gje-total');
        const progressFill = root.querySelector('.gje-progress-fill');
        const startBtn = root.querySelector('.gje-start-btn');
        const loadMsg = root.querySelector('.gje-load-msg');
        const totalMsg = root.querySelector('.gje-total-msg b');

        if(src){
            fetch(src, {cache: 'no-store'})
            .then(function(r){ return r.text(); })
            .then(function(js){
                const fakeWindow = {};
                const result = new Function(
                    'window',
                    js + '; return window.questions || window.gjeQuestions || (typeof questions !== "undefined" ? questions : []);'
                )(fakeWindow);

                questions = Array.isArray(result) ? result : [];
                totalMsg.textContent = questions.length;

                if(questions.length > 0){
                    startBtn.disabled = false;
                    startBtn.textContent = 'Start Mock Test';
                    loadMsg.style.display = 'none';
                } else {
                    startBtn.disabled = true;
                    loadMsg.innerHTML = '<span style="color:red;">Question পাওয়া যায়নি। JS file-এ questions array আছে কিনা check করুন।</span>';
                }
            })
            .catch(function(){
                startBtn.disabled = true;
                totalMsg.textContent = '0';
                loadMsg.innerHTML = '<span style="color:red;">CDN file load হয়নি। Link check করুন।</span>';
            });
        } else {
            startBtn.disabled = true;
            loadMsg.innerHTML = '<span style="color:red;">Shortcode-এ src URL দিন।</span>';
        }

        function getAnswerIndex(q){
            if(typeof q.answer === 'number') return q.answer;
            if(typeof q.ans === 'number') return q.ans;
            if(typeof q.correct === 'number') return q.correct;
            if(typeof q.answer === 'string' && Array.isArray(q.options)) return q.options.indexOf(q.answer);
            return -1;
        }

        function getQuestionText(q){
            return q.q || q.question || q.title || '';
        }

        function startTest(){
            if(started || questions.length === 0) return;
            started = true;
            selected = Array(questions.length).fill(null);
            totalBox.textContent = questions.length;
            startScreen.style.display = 'none';
            testScreen.style.display = 'block';
            openFullScreen(root);
            loadQuestion();
        }

        function openFullScreen(el){
            if(el.requestFullscreen) el.requestFullscreen().catch(function(){});
            else if(el.webkitRequestFullscreen) el.webkitRequestFullscreen();
            else if(el.msRequestFullscreen) el.msRequestFullscreen();
        }

        function closeFullScreen(){
            if(document.fullscreenElement && document.exitFullscreen) document.exitFullscreen();
            else if(document.webkitFullscreenElement && document.webkitExitFullscreen) document.webkitExitFullscreen();
        }

        function startQuestionTimer(){
            clearInterval(timerId);
            qTime = perQuestion;
            updateTimer();
            timerId = setInterval(function(){
                if(submitted) return clearInterval(timerId);
                qTime--;
                updateTimer();
                if(qTime <= 0){
                    clearInterval(timerId);
                    autoSkipQuestion();
                }
            }, 1000);
        }

        function updateTimer(){
            timeBox.textContent = qTime;
            if(qTime <= 5) timeBox.classList.add('gje-danger-time');
            else timeBox.classList.remove('gje-danger-time');
        }

        function autoSkipQuestion(){
            if(current < questions.length - 1){
                current++;
                loadQuestion();
            } else {
                submitTest();
            }
        }

        function loadQuestion(){
            if(submitted) return;
            const q = questions[current];
            qnoBox.textContent = current + 1;
            progressFill.style.width = (((current + 1) / questions.length) * 100) + '%';

            let html = '<div class="gje-question">Q' + (current + 1) + '. ' + escapeHtml(getQuestionText(q)) + '</div>';
            (q.options || []).forEach(function(op, i){
                html += '<label class="gje-option"><input type="radio" name="gje_option_gje_mock_300588_1785805271" ' + (selected[current] === i ? 'checked' : '') + ' data-index="' + i + '"> ' + escapeHtml(op) + '</label>';
            });

            quizBox.innerHTML = html;
            quizBox.querySelectorAll('input[type="radio"]').forEach(function(input){
                input.addEventListener('change', function(){
                    selected[current] = parseInt(this.dataset.index);
                });
            });
            startQuestionTimer();
        }

        function submitTest(){
            if(submitted) return;
            submitted = true;
            clearInterval(timerId);

            let correct = 0, wrong = 0, notAttempt = 0;
            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                if(selected[i] === null) notAttempt++;
                else if(selected[i] === ans) correct++;
                else wrong++;
            });

            const score = correct - (wrong * negative);
            let html = '<h3>Result</h3>' +
                '<div class="gje-result-grid">' +
                '<div>✅ Correct<br><b>' + correct + '</b></div>' +
                '<div>❌ Wrong<br><b>' + wrong + '</b></div>' +
                '<div>⚪ Not Attempted<br><b>' + notAttempt + '</b></div>' +
                '<div>🏆 Score<br><b>' + score.toFixed(2) + '</b></div>' +
                '</div><h3>Answer Review</h3>';

            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                html += '<div class="gje-review"><b>Q' + (i+1) + '. ' + escapeHtml(getQuestionText(q)) + '</b>';
                (q.options || []).forEach(function(op, j){
                    let cls = '';
                    if(j === ans) cls = ' gje-correct';
                    if(selected[i] === j && selected[i] !== ans) cls = ' gje-wrong';
                    html += '<div class="gje-review-option' + cls + '">' + escapeHtml(op) + '</div>';
                });
                if(q.explanation){ html += '<p><b>Explanation:</b> ' + escapeHtml(q.explanation) + '</p>'; }
                html += '</div>';
            });

            quizBox.innerHTML = '';
            root.querySelector('.gje-buttons').style.display = 'none';
            root.querySelector('.gje-topbar').style.display = 'none';
            root.querySelector('.gje-progress').style.display = 'none';
            resultBox.innerHTML = html;
            resultBox.scrollIntoView({behavior:'smooth'});
        }

        function escapeHtml(text){
            return String(text).replace(/[&<>'"]/g, function(m){
                return {'&':'&amp;','<':'&lt;','>':'&gt;',"'":'&#039;','"':'&quot;'}[m];
            });
        }

        startBtn.addEventListener('click', startTest);
        root.querySelector('.gje-exit-full').addEventListener('click', closeFullScreen);
        root.querySelector('.gje-prev').addEventListener('click', function(){
            if(current > 0){ current--; loadQuestion(); }
        });
        root.querySelector('.gje-next').addEventListener('click', function(){
            if(current < questions.length - 1){ current++; loadQuestion(); }
            else submitTest();
        });
        root.querySelector('.gje-submit').addEventListener('click', submitTest);
    })();
    </script>
    



<pre class="wp-block-code"><code></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>


    <div id="gje_mock_15476_1785805271" class="gje-mock-wrap"
         data-src="https://cdn.jsdelivr.net/gh/GovtJobExams/Geography@main/MountainHills.js"
         data-negative="0.25"
         data-per-question="30">

        <div class="gje-start-screen">
            <h2>ভারতের নদনদী এবং পাহাড়-পর্বত</h2>
            <p class="gje-info-line">প্রতি প্রশ্নের সময়: <b>30 সেকেন্ড</b></p>
            <p class="gje-info-line">Negative Mark: <b>0.25</b></p>
            <p class="gje-total-msg">Total Question: <b>0</b></p>
            <button type="button" class="gje-start-btn" disabled>Start Mock Test</button>
            <p class="gje-load-msg"></p>
        </div>

        <div class="gje-test-screen" style="display:none;">
            <div class="gje-full-head">
                <h2>ভারতের নদনদী এবং পাহাড়-পর্বত</h2>
                <button type="button" class="gje-exit-full">Exit Full Screen</button>
            </div>

            <div class="gje-topbar">
                <span>⏱ Time: <b class="gje-time">30</b>s</span>
                <span>Question: <b class="gje-qno">1</b>/<b class="gje-total">0</b></span>
                <span>Negative: <b>0.25</b></span>
            </div>

            <div class="gje-progress"><div class="gje-progress-fill"></div></div>
            <div class="gje-quiz-box">Loading questions...</div>

            <div class="gje-buttons">
                <button type="button" class="gje-prev">Previous</button>
                <button type="button" class="gje-next">Next / Skip</button>
                <button type="button" class="gje-submit">Submit Test</button>
            </div>

            <div class="gje-result-box"></div>
        </div>
    </div>

    <script>
    (function(){
        const root = document.getElementById('gje_mock_15476_1785805271');
        if(!root) return;

        let questions = [];
        let current = 0;
        let selected = [];
        let submitted = false;
        let started = false;
        let timerId = null;

        const src = root.dataset.src || '';
        const perQuestion = parseInt(root.dataset.perQuestion || '30');
        const negative = parseFloat(root.dataset.negative || '0.25');
        let qTime = perQuestion;

        const startScreen = root.querySelector('.gje-start-screen');
        const testScreen = root.querySelector('.gje-test-screen');
        const quizBox = root.querySelector('.gje-quiz-box');
        const resultBox = root.querySelector('.gje-result-box');
        const timeBox = root.querySelector('.gje-time');
        const qnoBox = root.querySelector('.gje-qno');
        const totalBox = root.querySelector('.gje-total');
        const progressFill = root.querySelector('.gje-progress-fill');
        const startBtn = root.querySelector('.gje-start-btn');
        const loadMsg = root.querySelector('.gje-load-msg');
        const totalMsg = root.querySelector('.gje-total-msg b');

        if(src){
            fetch(src, {cache: 'no-store'})
            .then(function(r){ return r.text(); })
            .then(function(js){
                const fakeWindow = {};
                const result = new Function(
                    'window',
                    js + '; return window.questions || window.gjeQuestions || (typeof questions !== "undefined" ? questions : []);'
                )(fakeWindow);

                questions = Array.isArray(result) ? result : [];
                totalMsg.textContent = questions.length;

                if(questions.length > 0){
                    startBtn.disabled = false;
                    startBtn.textContent = 'Start Mock Test';
                    loadMsg.style.display = 'none';
                } else {
                    startBtn.disabled = true;
                    loadMsg.innerHTML = '<span style="color:red;">Question পাওয়া যায়নি। JS file-এ questions array আছে কিনা check করুন।</span>';
                }
            })
            .catch(function(){
                startBtn.disabled = true;
                totalMsg.textContent = '0';
                loadMsg.innerHTML = '<span style="color:red;">CDN file load হয়নি। Link check করুন।</span>';
            });
        } else {
            startBtn.disabled = true;
            loadMsg.innerHTML = '<span style="color:red;">Shortcode-এ src URL দিন।</span>';
        }

        function getAnswerIndex(q){
            if(typeof q.answer === 'number') return q.answer;
            if(typeof q.ans === 'number') return q.ans;
            if(typeof q.correct === 'number') return q.correct;
            if(typeof q.answer === 'string' && Array.isArray(q.options)) return q.options.indexOf(q.answer);
            return -1;
        }

        function getQuestionText(q){
            return q.q || q.question || q.title || '';
        }

        function startTest(){
            if(started || questions.length === 0) return;
            started = true;
            selected = Array(questions.length).fill(null);
            totalBox.textContent = questions.length;
            startScreen.style.display = 'none';
            testScreen.style.display = 'block';
            openFullScreen(root);
            loadQuestion();
        }

        function openFullScreen(el){
            if(el.requestFullscreen) el.requestFullscreen().catch(function(){});
            else if(el.webkitRequestFullscreen) el.webkitRequestFullscreen();
            else if(el.msRequestFullscreen) el.msRequestFullscreen();
        }

        function closeFullScreen(){
            if(document.fullscreenElement && document.exitFullscreen) document.exitFullscreen();
            else if(document.webkitFullscreenElement && document.webkitExitFullscreen) document.webkitExitFullscreen();
        }

        function startQuestionTimer(){
            clearInterval(timerId);
            qTime = perQuestion;
            updateTimer();
            timerId = setInterval(function(){
                if(submitted) return clearInterval(timerId);
                qTime--;
                updateTimer();
                if(qTime <= 0){
                    clearInterval(timerId);
                    autoSkipQuestion();
                }
            }, 1000);
        }

        function updateTimer(){
            timeBox.textContent = qTime;
            if(qTime <= 5) timeBox.classList.add('gje-danger-time');
            else timeBox.classList.remove('gje-danger-time');
        }

        function autoSkipQuestion(){
            if(current < questions.length - 1){
                current++;
                loadQuestion();
            } else {
                submitTest();
            }
        }

        function loadQuestion(){
            if(submitted) return;
            const q = questions[current];
            qnoBox.textContent = current + 1;
            progressFill.style.width = (((current + 1) / questions.length) * 100) + '%';

            let html = '<div class="gje-question">Q' + (current + 1) + '. ' + escapeHtml(getQuestionText(q)) + '</div>';
            (q.options || []).forEach(function(op, i){
                html += '<label class="gje-option"><input type="radio" name="gje_option_gje_mock_15476_1785805271" ' + (selected[current] === i ? 'checked' : '') + ' data-index="' + i + '"> ' + escapeHtml(op) + '</label>';
            });

            quizBox.innerHTML = html;
            quizBox.querySelectorAll('input[type="radio"]').forEach(function(input){
                input.addEventListener('change', function(){
                    selected[current] = parseInt(this.dataset.index);
                });
            });
            startQuestionTimer();
        }

        function submitTest(){
            if(submitted) return;
            submitted = true;
            clearInterval(timerId);

            let correct = 0, wrong = 0, notAttempt = 0;
            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                if(selected[i] === null) notAttempt++;
                else if(selected[i] === ans) correct++;
                else wrong++;
            });

            const score = correct - (wrong * negative);
            let html = '<h3>Result</h3>' +
                '<div class="gje-result-grid">' +
                '<div>✅ Correct<br><b>' + correct + '</b></div>' +
                '<div>❌ Wrong<br><b>' + wrong + '</b></div>' +
                '<div>⚪ Not Attempted<br><b>' + notAttempt + '</b></div>' +
                '<div>🏆 Score<br><b>' + score.toFixed(2) + '</b></div>' +
                '</div><h3>Answer Review</h3>';

            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                html += '<div class="gje-review"><b>Q' + (i+1) + '. ' + escapeHtml(getQuestionText(q)) + '</b>';
                (q.options || []).forEach(function(op, j){
                    let cls = '';
                    if(j === ans) cls = ' gje-correct';
                    if(selected[i] === j && selected[i] !== ans) cls = ' gje-wrong';
                    html += '<div class="gje-review-option' + cls + '">' + escapeHtml(op) + '</div>';
                });
                if(q.explanation){ html += '<p><b>Explanation:</b> ' + escapeHtml(q.explanation) + '</p>'; }
                html += '</div>';
            });

            quizBox.innerHTML = '';
            root.querySelector('.gje-buttons').style.display = 'none';
            root.querySelector('.gje-topbar').style.display = 'none';
            root.querySelector('.gje-progress').style.display = 'none';
            resultBox.innerHTML = html;
            resultBox.scrollIntoView({behavior:'smooth'});
        }

        function escapeHtml(text){
            return String(text).replace(/[&<>'"]/g, function(m){
                return {'&':'&amp;','<':'&lt;','>':'&gt;',"'":'&#039;','"':'&quot;'}[m];
            });
        }

        startBtn.addEventListener('click', startTest);
        root.querySelector('.gje-exit-full').addEventListener('click', closeFullScreen);
        root.querySelector('.gje-prev').addEventListener('click', function(){
            if(current > 0){ current--; loadQuestion(); }
        });
        root.querySelector('.gje-next').addEventListener('click', function(){
            if(current < questions.length - 1){ current++; loadQuestion(); }
            else submitTest();
        });
        root.querySelector('.gje-submit').addEventListener('click', submitTest);
    })();
    </script>
    
]]></content:encoded>
					
					<wfw:commentRss>https://govtjobexams.com/free-geography-mock-test/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Free History Mock Test</title>
		<link>https://govtjobexams.com/free-history-mock-test/</link>
					<comments>https://govtjobexams.com/free-history-mock-test/#respond</comments>
		
		<dc:creator><![CDATA[Deba]]></dc:creator>
		<pubDate>Thu, 02 Jul 2026 06:51:53 +0000</pubDate>
				<category><![CDATA[Mock Test]]></category>
		<category><![CDATA[Free Mock Test]]></category>
		<guid isPermaLink="false">https://govtjobexams.com/?p=461</guid>

					<description><![CDATA[আমাদের এই ওয়েবসাইট পেজে বিভিন্ন সরকারি চাকরির খবর, সরকারি প্রকল্প এমনকি চাকরির পরীক্ষা সংক্রান্ত এডমিট কার্ড, পরীক্ষার তারিখ , পরীক্ষার সিলেবাস, পরীক্ষার আনসার কি, পরীক্ষার রেজাল্ট সব তথ্য পাওয়ার পাশাপাশি পরীক্ষায় আসার মতো বিভিন্ন টপিকের উপর MCQ টেস্ট দিতে পারবেন। আমাদের এক্সপার্ট দ্বারা বাছাই করা, রেল, পুলিশ, গ্রাম পঞ্চায়েত, এসএসসি, PSC তে আসা প্রশ্ন গুলি [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">আমাদের এই ওয়েবসাইট পেজে বিভিন্ন সরকারি চাকরির খবর, সরকারি প্রকল্প এমনকি চাকরির পরীক্ষা সংক্রান্ত এডমিট কার্ড, পরীক্ষার তারিখ , পরীক্ষার সিলেবাস, পরীক্ষার আনসার কি, পরীক্ষার রেজাল্ট সব তথ্য পাওয়ার পাশাপাশি পরীক্ষায় আসার মতো বিভিন্ন টপিকের উপর MCQ টেস্ট দিতে পারবেন। আমাদের এক্সপার্ট দ্বারা বাছাই করা, রেল, পুলিশ, গ্রাম পঞ্চায়েত, এসএসসি, PSC তে আসা প্রশ্ন গুলি দিয়ে একটি মক টেস্ট দেওয়া হলো , খুব শীঘ্রই আরো খুব গুরুত্বপূর্ণ প্রশ্ন দিয়ে মকটেস্ট এর আয়োজন হবে। এরকম ফ্রি তে মকটেস্ট দিতে, চাকুরীর খবর পেতে আমাদের হোয়াটস্যাপ এবং টেলিগ্রাম চ্যানেল ফলো করুন</p>


    <div id="gje_mock_273365_1785805271" class="gje-mock-wrap"
         data-src="https://cdn.jsdelivr.net/gh/GovtJobExams/History@main/IndusValleyCivilization.js"
         data-negative="0.25"
         data-per-question="30">

        <div class="gje-start-screen">
            <h2>সিন্ধু  সভ্যতা</h2>
            <p class="gje-info-line">প্রতি প্রশ্নের সময়: <b>30 সেকেন্ড</b></p>
            <p class="gje-info-line">Negative Mark: <b>0.25</b></p>
            <p class="gje-total-msg">Total Question: <b>0</b></p>
            <button type="button" class="gje-start-btn" disabled>Start Mock Test</button>
            <p class="gje-load-msg"></p>
        </div>

        <div class="gje-test-screen" style="display:none;">
            <div class="gje-full-head">
                <h2>সিন্ধু  সভ্যতা</h2>
                <button type="button" class="gje-exit-full">Exit Full Screen</button>
            </div>

            <div class="gje-topbar">
                <span>⏱ Time: <b class="gje-time">30</b>s</span>
                <span>Question: <b class="gje-qno">1</b>/<b class="gje-total">0</b></span>
                <span>Negative: <b>0.25</b></span>
            </div>

            <div class="gje-progress"><div class="gje-progress-fill"></div></div>
            <div class="gje-quiz-box">Loading questions...</div>

            <div class="gje-buttons">
                <button type="button" class="gje-prev">Previous</button>
                <button type="button" class="gje-next">Next / Skip</button>
                <button type="button" class="gje-submit">Submit Test</button>
            </div>

            <div class="gje-result-box"></div>
        </div>
    </div>

    <script>
    (function(){
        const root = document.getElementById('gje_mock_273365_1785805271');
        if(!root) return;

        let questions = [];
        let current = 0;
        let selected = [];
        let submitted = false;
        let started = false;
        let timerId = null;

        const src = root.dataset.src || '';
        const perQuestion = parseInt(root.dataset.perQuestion || '30');
        const negative = parseFloat(root.dataset.negative || '0.25');
        let qTime = perQuestion;

        const startScreen = root.querySelector('.gje-start-screen');
        const testScreen = root.querySelector('.gje-test-screen');
        const quizBox = root.querySelector('.gje-quiz-box');
        const resultBox = root.querySelector('.gje-result-box');
        const timeBox = root.querySelector('.gje-time');
        const qnoBox = root.querySelector('.gje-qno');
        const totalBox = root.querySelector('.gje-total');
        const progressFill = root.querySelector('.gje-progress-fill');
        const startBtn = root.querySelector('.gje-start-btn');
        const loadMsg = root.querySelector('.gje-load-msg');
        const totalMsg = root.querySelector('.gje-total-msg b');

        if(src){
            fetch(src, {cache: 'no-store'})
            .then(function(r){ return r.text(); })
            .then(function(js){
                const fakeWindow = {};
                const result = new Function(
                    'window',
                    js + '; return window.questions || window.gjeQuestions || (typeof questions !== "undefined" ? questions : []);'
                )(fakeWindow);

                questions = Array.isArray(result) ? result : [];
                totalMsg.textContent = questions.length;

                if(questions.length > 0){
                    startBtn.disabled = false;
                    startBtn.textContent = 'Start Mock Test';
                    loadMsg.style.display = 'none';
                } else {
                    startBtn.disabled = true;
                    loadMsg.innerHTML = '<span style="color:red;">Question পাওয়া যায়নি। JS file-এ questions array আছে কিনা check করুন।</span>';
                }
            })
            .catch(function(){
                startBtn.disabled = true;
                totalMsg.textContent = '0';
                loadMsg.innerHTML = '<span style="color:red;">CDN file load হয়নি। Link check করুন।</span>';
            });
        } else {
            startBtn.disabled = true;
            loadMsg.innerHTML = '<span style="color:red;">Shortcode-এ src URL দিন।</span>';
        }

        function getAnswerIndex(q){
            if(typeof q.answer === 'number') return q.answer;
            if(typeof q.ans === 'number') return q.ans;
            if(typeof q.correct === 'number') return q.correct;
            if(typeof q.answer === 'string' && Array.isArray(q.options)) return q.options.indexOf(q.answer);
            return -1;
        }

        function getQuestionText(q){
            return q.q || q.question || q.title || '';
        }

        function startTest(){
            if(started || questions.length === 0) return;
            started = true;
            selected = Array(questions.length).fill(null);
            totalBox.textContent = questions.length;
            startScreen.style.display = 'none';
            testScreen.style.display = 'block';
            openFullScreen(root);
            loadQuestion();
        }

        function openFullScreen(el){
            if(el.requestFullscreen) el.requestFullscreen().catch(function(){});
            else if(el.webkitRequestFullscreen) el.webkitRequestFullscreen();
            else if(el.msRequestFullscreen) el.msRequestFullscreen();
        }

        function closeFullScreen(){
            if(document.fullscreenElement && document.exitFullscreen) document.exitFullscreen();
            else if(document.webkitFullscreenElement && document.webkitExitFullscreen) document.webkitExitFullscreen();
        }

        function startQuestionTimer(){
            clearInterval(timerId);
            qTime = perQuestion;
            updateTimer();
            timerId = setInterval(function(){
                if(submitted) return clearInterval(timerId);
                qTime--;
                updateTimer();
                if(qTime <= 0){
                    clearInterval(timerId);
                    autoSkipQuestion();
                }
            }, 1000);
        }

        function updateTimer(){
            timeBox.textContent = qTime;
            if(qTime <= 5) timeBox.classList.add('gje-danger-time');
            else timeBox.classList.remove('gje-danger-time');
        }

        function autoSkipQuestion(){
            if(current < questions.length - 1){
                current++;
                loadQuestion();
            } else {
                submitTest();
            }
        }

        function loadQuestion(){
            if(submitted) return;
            const q = questions[current];
            qnoBox.textContent = current + 1;
            progressFill.style.width = (((current + 1) / questions.length) * 100) + '%';

            let html = '<div class="gje-question">Q' + (current + 1) + '. ' + escapeHtml(getQuestionText(q)) + '</div>';
            (q.options || []).forEach(function(op, i){
                html += '<label class="gje-option"><input type="radio" name="gje_option_gje_mock_273365_1785805271" ' + (selected[current] === i ? 'checked' : '') + ' data-index="' + i + '"> ' + escapeHtml(op) + '</label>';
            });

            quizBox.innerHTML = html;
            quizBox.querySelectorAll('input[type="radio"]').forEach(function(input){
                input.addEventListener('change', function(){
                    selected[current] = parseInt(this.dataset.index);
                });
            });
            startQuestionTimer();
        }

        function submitTest(){
            if(submitted) return;
            submitted = true;
            clearInterval(timerId);

            let correct = 0, wrong = 0, notAttempt = 0;
            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                if(selected[i] === null) notAttempt++;
                else if(selected[i] === ans) correct++;
                else wrong++;
            });

            const score = correct - (wrong * negative);
            let html = '<h3>Result</h3>' +
                '<div class="gje-result-grid">' +
                '<div>✅ Correct<br><b>' + correct + '</b></div>' +
                '<div>❌ Wrong<br><b>' + wrong + '</b></div>' +
                '<div>⚪ Not Attempted<br><b>' + notAttempt + '</b></div>' +
                '<div>🏆 Score<br><b>' + score.toFixed(2) + '</b></div>' +
                '</div><h3>Answer Review</h3>';

            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                html += '<div class="gje-review"><b>Q' + (i+1) + '. ' + escapeHtml(getQuestionText(q)) + '</b>';
                (q.options || []).forEach(function(op, j){
                    let cls = '';
                    if(j === ans) cls = ' gje-correct';
                    if(selected[i] === j && selected[i] !== ans) cls = ' gje-wrong';
                    html += '<div class="gje-review-option' + cls + '">' + escapeHtml(op) + '</div>';
                });
                if(q.explanation){ html += '<p><b>Explanation:</b> ' + escapeHtml(q.explanation) + '</p>'; }
                html += '</div>';
            });

            quizBox.innerHTML = '';
            root.querySelector('.gje-buttons').style.display = 'none';
            root.querySelector('.gje-topbar').style.display = 'none';
            root.querySelector('.gje-progress').style.display = 'none';
            resultBox.innerHTML = html;
            resultBox.scrollIntoView({behavior:'smooth'});
        }

        function escapeHtml(text){
            return String(text).replace(/[&<>'"]/g, function(m){
                return {'&':'&amp;','<':'&lt;','>':'&gt;',"'":'&#039;','"':'&quot;'}[m];
            });
        }

        startBtn.addEventListener('click', startTest);
        root.querySelector('.gje-exit-full').addEventListener('click', closeFullScreen);
        root.querySelector('.gje-prev').addEventListener('click', function(){
            if(current > 0){ current--; loadQuestion(); }
        });
        root.querySelector('.gje-next').addEventListener('click', function(){
            if(current < questions.length - 1){ current++; loadQuestion(); }
            else submitTest();
        });
        root.querySelector('.gje-submit').addEventListener('click', submitTest);
    })();
    </script>
    


    <div id="gje_mock_448607_1785805271" class="gje-mock-wrap"
         data-src="https://cdn.jsdelivr.net/gh/GovtJobExams/History@main/RSixteenthMahajan.js"
         data-negative="0.25"
         data-per-question="30">

        <div class="gje-start-screen">
            <h2>ষোড়শ মহাজনপদ</h2>
            <p class="gje-info-line">প্রতি প্রশ্নের সময়: <b>30 সেকেন্ড</b></p>
            <p class="gje-info-line">Negative Mark: <b>0.25</b></p>
            <p class="gje-total-msg">Total Question: <b>0</b></p>
            <button type="button" class="gje-start-btn" disabled>Start Mock Test</button>
            <p class="gje-load-msg"></p>
        </div>

        <div class="gje-test-screen" style="display:none;">
            <div class="gje-full-head">
                <h2>ষোড়শ মহাজনপদ</h2>
                <button type="button" class="gje-exit-full">Exit Full Screen</button>
            </div>

            <div class="gje-topbar">
                <span>⏱ Time: <b class="gje-time">30</b>s</span>
                <span>Question: <b class="gje-qno">1</b>/<b class="gje-total">0</b></span>
                <span>Negative: <b>0.25</b></span>
            </div>

            <div class="gje-progress"><div class="gje-progress-fill"></div></div>
            <div class="gje-quiz-box">Loading questions...</div>

            <div class="gje-buttons">
                <button type="button" class="gje-prev">Previous</button>
                <button type="button" class="gje-next">Next / Skip</button>
                <button type="button" class="gje-submit">Submit Test</button>
            </div>

            <div class="gje-result-box"></div>
        </div>
    </div>

    <script>
    (function(){
        const root = document.getElementById('gje_mock_448607_1785805271');
        if(!root) return;

        let questions = [];
        let current = 0;
        let selected = [];
        let submitted = false;
        let started = false;
        let timerId = null;

        const src = root.dataset.src || '';
        const perQuestion = parseInt(root.dataset.perQuestion || '30');
        const negative = parseFloat(root.dataset.negative || '0.25');
        let qTime = perQuestion;

        const startScreen = root.querySelector('.gje-start-screen');
        const testScreen = root.querySelector('.gje-test-screen');
        const quizBox = root.querySelector('.gje-quiz-box');
        const resultBox = root.querySelector('.gje-result-box');
        const timeBox = root.querySelector('.gje-time');
        const qnoBox = root.querySelector('.gje-qno');
        const totalBox = root.querySelector('.gje-total');
        const progressFill = root.querySelector('.gje-progress-fill');
        const startBtn = root.querySelector('.gje-start-btn');
        const loadMsg = root.querySelector('.gje-load-msg');
        const totalMsg = root.querySelector('.gje-total-msg b');

        if(src){
            fetch(src, {cache: 'no-store'})
            .then(function(r){ return r.text(); })
            .then(function(js){
                const fakeWindow = {};
                const result = new Function(
                    'window',
                    js + '; return window.questions || window.gjeQuestions || (typeof questions !== "undefined" ? questions : []);'
                )(fakeWindow);

                questions = Array.isArray(result) ? result : [];
                totalMsg.textContent = questions.length;

                if(questions.length > 0){
                    startBtn.disabled = false;
                    startBtn.textContent = 'Start Mock Test';
                    loadMsg.style.display = 'none';
                } else {
                    startBtn.disabled = true;
                    loadMsg.innerHTML = '<span style="color:red;">Question পাওয়া যায়নি। JS file-এ questions array আছে কিনা check করুন।</span>';
                }
            })
            .catch(function(){
                startBtn.disabled = true;
                totalMsg.textContent = '0';
                loadMsg.innerHTML = '<span style="color:red;">CDN file load হয়নি। Link check করুন।</span>';
            });
        } else {
            startBtn.disabled = true;
            loadMsg.innerHTML = '<span style="color:red;">Shortcode-এ src URL দিন।</span>';
        }

        function getAnswerIndex(q){
            if(typeof q.answer === 'number') return q.answer;
            if(typeof q.ans === 'number') return q.ans;
            if(typeof q.correct === 'number') return q.correct;
            if(typeof q.answer === 'string' && Array.isArray(q.options)) return q.options.indexOf(q.answer);
            return -1;
        }

        function getQuestionText(q){
            return q.q || q.question || q.title || '';
        }

        function startTest(){
            if(started || questions.length === 0) return;
            started = true;
            selected = Array(questions.length).fill(null);
            totalBox.textContent = questions.length;
            startScreen.style.display = 'none';
            testScreen.style.display = 'block';
            openFullScreen(root);
            loadQuestion();
        }

        function openFullScreen(el){
            if(el.requestFullscreen) el.requestFullscreen().catch(function(){});
            else if(el.webkitRequestFullscreen) el.webkitRequestFullscreen();
            else if(el.msRequestFullscreen) el.msRequestFullscreen();
        }

        function closeFullScreen(){
            if(document.fullscreenElement && document.exitFullscreen) document.exitFullscreen();
            else if(document.webkitFullscreenElement && document.webkitExitFullscreen) document.webkitExitFullscreen();
        }

        function startQuestionTimer(){
            clearInterval(timerId);
            qTime = perQuestion;
            updateTimer();
            timerId = setInterval(function(){
                if(submitted) return clearInterval(timerId);
                qTime--;
                updateTimer();
                if(qTime <= 0){
                    clearInterval(timerId);
                    autoSkipQuestion();
                }
            }, 1000);
        }

        function updateTimer(){
            timeBox.textContent = qTime;
            if(qTime <= 5) timeBox.classList.add('gje-danger-time');
            else timeBox.classList.remove('gje-danger-time');
        }

        function autoSkipQuestion(){
            if(current < questions.length - 1){
                current++;
                loadQuestion();
            } else {
                submitTest();
            }
        }

        function loadQuestion(){
            if(submitted) return;
            const q = questions[current];
            qnoBox.textContent = current + 1;
            progressFill.style.width = (((current + 1) / questions.length) * 100) + '%';

            let html = '<div class="gje-question">Q' + (current + 1) + '. ' + escapeHtml(getQuestionText(q)) + '</div>';
            (q.options || []).forEach(function(op, i){
                html += '<label class="gje-option"><input type="radio" name="gje_option_gje_mock_448607_1785805271" ' + (selected[current] === i ? 'checked' : '') + ' data-index="' + i + '"> ' + escapeHtml(op) + '</label>';
            });

            quizBox.innerHTML = html;
            quizBox.querySelectorAll('input[type="radio"]').forEach(function(input){
                input.addEventListener('change', function(){
                    selected[current] = parseInt(this.dataset.index);
                });
            });
            startQuestionTimer();
        }

        function submitTest(){
            if(submitted) return;
            submitted = true;
            clearInterval(timerId);

            let correct = 0, wrong = 0, notAttempt = 0;
            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                if(selected[i] === null) notAttempt++;
                else if(selected[i] === ans) correct++;
                else wrong++;
            });

            const score = correct - (wrong * negative);
            let html = '<h3>Result</h3>' +
                '<div class="gje-result-grid">' +
                '<div>✅ Correct<br><b>' + correct + '</b></div>' +
                '<div>❌ Wrong<br><b>' + wrong + '</b></div>' +
                '<div>⚪ Not Attempted<br><b>' + notAttempt + '</b></div>' +
                '<div>🏆 Score<br><b>' + score.toFixed(2) + '</b></div>' +
                '</div><h3>Answer Review</h3>';

            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                html += '<div class="gje-review"><b>Q' + (i+1) + '. ' + escapeHtml(getQuestionText(q)) + '</b>';
                (q.options || []).forEach(function(op, j){
                    let cls = '';
                    if(j === ans) cls = ' gje-correct';
                    if(selected[i] === j && selected[i] !== ans) cls = ' gje-wrong';
                    html += '<div class="gje-review-option' + cls + '">' + escapeHtml(op) + '</div>';
                });
                if(q.explanation){ html += '<p><b>Explanation:</b> ' + escapeHtml(q.explanation) + '</p>'; }
                html += '</div>';
            });

            quizBox.innerHTML = '';
            root.querySelector('.gje-buttons').style.display = 'none';
            root.querySelector('.gje-topbar').style.display = 'none';
            root.querySelector('.gje-progress').style.display = 'none';
            resultBox.innerHTML = html;
            resultBox.scrollIntoView({behavior:'smooth'});
        }

        function escapeHtml(text){
            return String(text).replace(/[&<>'"]/g, function(m){
                return {'&':'&amp;','<':'&lt;','>':'&gt;',"'":'&#039;','"':'&quot;'}[m];
            });
        }

        startBtn.addEventListener('click', startTest);
        root.querySelector('.gje-exit-full').addEventListener('click', closeFullScreen);
        root.querySelector('.gje-prev').addEventListener('click', function(){
            if(current > 0){ current--; loadQuestion(); }
        });
        root.querySelector('.gje-next').addEventListener('click', function(){
            if(current < questions.length - 1){ current++; loadQuestion(); }
            else submitTest();
        });
        root.querySelector('.gje-submit').addEventListener('click', submitTest);
    })();
    </script>
    


    <div id="gje_mock_772236_1785805271" class="gje-mock-wrap"
         data-src="https://cdn.jsdelivr.net/gh/GovtJobExams/History@main/IndianNationalCongress.js"
         data-negative="0.25"
         data-per-question="30">

        <div class="gje-start-screen">
            <h2>জাতীয় কংগ্রেস</h2>
            <p class="gje-info-line">প্রতি প্রশ্নের সময়: <b>30 সেকেন্ড</b></p>
            <p class="gje-info-line">Negative Mark: <b>0.25</b></p>
            <p class="gje-total-msg">Total Question: <b>0</b></p>
            <button type="button" class="gje-start-btn" disabled>Start Mock Test</button>
            <p class="gje-load-msg"></p>
        </div>

        <div class="gje-test-screen" style="display:none;">
            <div class="gje-full-head">
                <h2>জাতীয় কংগ্রেস</h2>
                <button type="button" class="gje-exit-full">Exit Full Screen</button>
            </div>

            <div class="gje-topbar">
                <span>⏱ Time: <b class="gje-time">30</b>s</span>
                <span>Question: <b class="gje-qno">1</b>/<b class="gje-total">0</b></span>
                <span>Negative: <b>0.25</b></span>
            </div>

            <div class="gje-progress"><div class="gje-progress-fill"></div></div>
            <div class="gje-quiz-box">Loading questions...</div>

            <div class="gje-buttons">
                <button type="button" class="gje-prev">Previous</button>
                <button type="button" class="gje-next">Next / Skip</button>
                <button type="button" class="gje-submit">Submit Test</button>
            </div>

            <div class="gje-result-box"></div>
        </div>
    </div>

    <script>
    (function(){
        const root = document.getElementById('gje_mock_772236_1785805271');
        if(!root) return;

        let questions = [];
        let current = 0;
        let selected = [];
        let submitted = false;
        let started = false;
        let timerId = null;

        const src = root.dataset.src || '';
        const perQuestion = parseInt(root.dataset.perQuestion || '30');
        const negative = parseFloat(root.dataset.negative || '0.25');
        let qTime = perQuestion;

        const startScreen = root.querySelector('.gje-start-screen');
        const testScreen = root.querySelector('.gje-test-screen');
        const quizBox = root.querySelector('.gje-quiz-box');
        const resultBox = root.querySelector('.gje-result-box');
        const timeBox = root.querySelector('.gje-time');
        const qnoBox = root.querySelector('.gje-qno');
        const totalBox = root.querySelector('.gje-total');
        const progressFill = root.querySelector('.gje-progress-fill');
        const startBtn = root.querySelector('.gje-start-btn');
        const loadMsg = root.querySelector('.gje-load-msg');
        const totalMsg = root.querySelector('.gje-total-msg b');

        if(src){
            fetch(src, {cache: 'no-store'})
            .then(function(r){ return r.text(); })
            .then(function(js){
                const fakeWindow = {};
                const result = new Function(
                    'window',
                    js + '; return window.questions || window.gjeQuestions || (typeof questions !== "undefined" ? questions : []);'
                )(fakeWindow);

                questions = Array.isArray(result) ? result : [];
                totalMsg.textContent = questions.length;

                if(questions.length > 0){
                    startBtn.disabled = false;
                    startBtn.textContent = 'Start Mock Test';
                    loadMsg.style.display = 'none';
                } else {
                    startBtn.disabled = true;
                    loadMsg.innerHTML = '<span style="color:red;">Question পাওয়া যায়নি। JS file-এ questions array আছে কিনা check করুন।</span>';
                }
            })
            .catch(function(){
                startBtn.disabled = true;
                totalMsg.textContent = '0';
                loadMsg.innerHTML = '<span style="color:red;">CDN file load হয়নি। Link check করুন।</span>';
            });
        } else {
            startBtn.disabled = true;
            loadMsg.innerHTML = '<span style="color:red;">Shortcode-এ src URL দিন।</span>';
        }

        function getAnswerIndex(q){
            if(typeof q.answer === 'number') return q.answer;
            if(typeof q.ans === 'number') return q.ans;
            if(typeof q.correct === 'number') return q.correct;
            if(typeof q.answer === 'string' && Array.isArray(q.options)) return q.options.indexOf(q.answer);
            return -1;
        }

        function getQuestionText(q){
            return q.q || q.question || q.title || '';
        }

        function startTest(){
            if(started || questions.length === 0) return;
            started = true;
            selected = Array(questions.length).fill(null);
            totalBox.textContent = questions.length;
            startScreen.style.display = 'none';
            testScreen.style.display = 'block';
            openFullScreen(root);
            loadQuestion();
        }

        function openFullScreen(el){
            if(el.requestFullscreen) el.requestFullscreen().catch(function(){});
            else if(el.webkitRequestFullscreen) el.webkitRequestFullscreen();
            else if(el.msRequestFullscreen) el.msRequestFullscreen();
        }

        function closeFullScreen(){
            if(document.fullscreenElement && document.exitFullscreen) document.exitFullscreen();
            else if(document.webkitFullscreenElement && document.webkitExitFullscreen) document.webkitExitFullscreen();
        }

        function startQuestionTimer(){
            clearInterval(timerId);
            qTime = perQuestion;
            updateTimer();
            timerId = setInterval(function(){
                if(submitted) return clearInterval(timerId);
                qTime--;
                updateTimer();
                if(qTime <= 0){
                    clearInterval(timerId);
                    autoSkipQuestion();
                }
            }, 1000);
        }

        function updateTimer(){
            timeBox.textContent = qTime;
            if(qTime <= 5) timeBox.classList.add('gje-danger-time');
            else timeBox.classList.remove('gje-danger-time');
        }

        function autoSkipQuestion(){
            if(current < questions.length - 1){
                current++;
                loadQuestion();
            } else {
                submitTest();
            }
        }

        function loadQuestion(){
            if(submitted) return;
            const q = questions[current];
            qnoBox.textContent = current + 1;
            progressFill.style.width = (((current + 1) / questions.length) * 100) + '%';

            let html = '<div class="gje-question">Q' + (current + 1) + '. ' + escapeHtml(getQuestionText(q)) + '</div>';
            (q.options || []).forEach(function(op, i){
                html += '<label class="gje-option"><input type="radio" name="gje_option_gje_mock_772236_1785805271" ' + (selected[current] === i ? 'checked' : '') + ' data-index="' + i + '"> ' + escapeHtml(op) + '</label>';
            });

            quizBox.innerHTML = html;
            quizBox.querySelectorAll('input[type="radio"]').forEach(function(input){
                input.addEventListener('change', function(){
                    selected[current] = parseInt(this.dataset.index);
                });
            });
            startQuestionTimer();
        }

        function submitTest(){
            if(submitted) return;
            submitted = true;
            clearInterval(timerId);

            let correct = 0, wrong = 0, notAttempt = 0;
            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                if(selected[i] === null) notAttempt++;
                else if(selected[i] === ans) correct++;
                else wrong++;
            });

            const score = correct - (wrong * negative);
            let html = '<h3>Result</h3>' +
                '<div class="gje-result-grid">' +
                '<div>✅ Correct<br><b>' + correct + '</b></div>' +
                '<div>❌ Wrong<br><b>' + wrong + '</b></div>' +
                '<div>⚪ Not Attempted<br><b>' + notAttempt + '</b></div>' +
                '<div>🏆 Score<br><b>' + score.toFixed(2) + '</b></div>' +
                '</div><h3>Answer Review</h3>';

            questions.forEach(function(q, i){
                const ans = getAnswerIndex(q);
                html += '<div class="gje-review"><b>Q' + (i+1) + '. ' + escapeHtml(getQuestionText(q)) + '</b>';
                (q.options || []).forEach(function(op, j){
                    let cls = '';
                    if(j === ans) cls = ' gje-correct';
                    if(selected[i] === j && selected[i] !== ans) cls = ' gje-wrong';
                    html += '<div class="gje-review-option' + cls + '">' + escapeHtml(op) + '</div>';
                });
                if(q.explanation){ html += '<p><b>Explanation:</b> ' + escapeHtml(q.explanation) + '</p>'; }
                html += '</div>';
            });

            quizBox.innerHTML = '';
            root.querySelector('.gje-buttons').style.display = 'none';
            root.querySelector('.gje-topbar').style.display = 'none';
            root.querySelector('.gje-progress').style.display = 'none';
            resultBox.innerHTML = html;
            resultBox.scrollIntoView({behavior:'smooth'});
        }

        function escapeHtml(text){
            return String(text).replace(/[&<>'"]/g, function(m){
                return {'&':'&amp;','<':'&lt;','>':'&gt;',"'":'&#039;','"':'&quot;'}[m];
            });
        }

        startBtn.addEventListener('click', startTest);
        root.querySelector('.gje-exit-full').addEventListener('click', closeFullScreen);
        root.querySelector('.gje-prev').addEventListener('click', function(){
            if(current > 0){ current--; loadQuestion(); }
        });
        root.querySelector('.gje-next').addEventListener('click', function(){
            if(current < questions.length - 1){ current++; loadQuestion(); }
            else submitTest();
        });
        root.querySelector('.gje-submit').addEventListener('click', submitTest);
    })();
    </script>
    
]]></content:encoded>
					
					<wfw:commentRss>https://govtjobexams.com/free-history-mock-test/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
